指针算术(char*)&a [1] - (char*)&a [0] == 4

dre*_*erD 3 c pointers casting

如果a是一个int数组,(char*) &a[1] - (char *)&a[0]则等于4,而&a[1] - &a[0]等于1.为什么会这样?

woo*_*tar 5

指针数学运算的大小与其指向的数据结构有关.这是因为如果我这样做:

int array[10] ;
int * p = array ;

p ++ ;
Run Code Online (Sandbox Code Playgroud)

我想p指向第二个int,而不是两个元素中间的一些内存.

所以&a[1]是四个字节,&a[0]但要求它&a[1] - &a[0]询问ints它有多少分开.当你把它投射到char你时,要求你根据大小来计算数学char.