理解指针变量增量

时间:2015-04-03 08:06:42

标签: c pointers increment post-increment

在阅读指针时,我发现指针变量用于表示这样的数组:

char* chrArray;
int* intArray;

之后,我发现代码中使用的charArray++intArray++表示charArrayintArray的下一个元素。但到目前为止,我知道C中的char是1个字节,数组中的int是4个字节。所以我无法理解增量运算符在这里的行为。任何人都可以解释一下。

2 个答案:

答案 0 :(得分:4)

这由知道指针类型的编译器处理,因此可以通过相关大小增加它存储的地址,无论是char,int还是任何其他类型。

答案 1 :(得分:3)

根据C11标准文档,第6.5.2.5章, Postfix递增和递减运算符

  

postfix ++运算符的结果是操作数的值。作为副作用,   操作数对象的值递增(即,相应类型的 值1 是   添加到它)。

因此,只要您使用后缀增量运算符,就不会添加任何特定值,而是添加值1 使用运算符的操作数的类型。


现在举个例子,

  • chrArray的类型为char *。因此,如果我们执行chrArray++,则char [sizeof(char)类型的值1]将被添加到chrArray作为结果。< / p>

  • OTOH,intArray属于int *类型。因此,如果我们执行intArray++,则int [sizeof(int)类型的值(在32位平台上为4可能会有所不同]将添加到{{1}结果。

基本上,任何类型的指针变量上的Postfix增量运算符都指向该类型的 next元素(提供的,有效访问)。