如果 a 是一个 int 数组,(char*) &a[1] - (char *)&a[0]
等于 4,而 &a[1] - &a[ 0]
等于 1。这是为什么?
最佳答案
指针数学对其指向的数据结构的大小进行运算。这是因为如果我这样做:
int array[10] ;
int * p = array ;
p ++ ;
我希望 p
指向第二个 int,而不是两个元素之间的一些内存。
所以 &a[1]
与 &a[0]
相距四个字节,但要求它 &a[1] - &a[0]
询问相隔多少个int
。当您将其转换为 char
时,您需要根据 char
的大小进行数学运算。
关于c - 指针运算 (char*) &a[1] - (char *)&a[0] == 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486661/