加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

“*(指针整数)”在C中做什么?

发布时间:2020-12-16 05:52:49 所属栏目:百科 来源:网络整理
导读:我对这个程序中代码行的作用感到困惑: int *temp = new int [cap];int num = 0;for(int i = name; i number; i++){ *(temp + count) = *(foo + i); num++;} name,number和foo是全局变量(foo是指针), 和上限是一个论点. 具体来说,我不明白这一行: *(temp +
我对这个程序中代码行的作用感到困惑:
int *temp = new int [cap];
int num = 0;

for(int i = name; i < number; i++)
{
 *(temp + count) = *(foo + i);
 num++;
}

name,number和foo是全局变量(foo是指针),
和上限是一个论点.

具体来说,我不明白这一行:

*(temp + count) = *(foo + i);

为什么有指向括号的指针,这会有什么作用?

解决方法

*(temp + count) = *(foo + i);

运算符正在执行指针运算.将一个整数添加到指针值会产生一个新指针,该指针在原始指针之后增加指定数量的对象.例如,如果p是指向arr [0]的指针,则p 2指向arr [2].

*运算符会对结果指针进行处理,为您提供指向的对象.

实际上,数组索引operator []是根据指针算法定义的,因此A [i]表示*(A i)(忽略运算符重载).所以上面的代码行:

*(temp + count) = *(foo + i);

也可以写成(更明确的恕我直言):

temp[count] = foo[i];

您可能需要阅读comp.lang.c FAQ,特别是第4节(指针)和第6节(数组和指针).大多数信息也适用于C.

但是,C提供了更高级的库接口,它可以比低级C等价物更强大.在C中编写直接处理数组和指向数组元素的指针的代码很少是个好主意,除非它是非常低级的代码和性能是关键的和/或你正在处理来自C代码的数据结构.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读