在阅读指针时,我发现指针变量用于表示这样的数组:
char* chrArray;
int* intArray;
之后,我发现代码中使用的charArray++
和intArray++
表示charArray
和intArray
的下一个元素。但到目前为止,我知道C中的char
是1个字节,数组中的int
是4个字节。所以我无法理解增量运算符在这里的行为。任何人都可以解释一下。
答案 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元素(提供的,有效访问)。