C中的指针减法与数组

Pointer Subtraction in C with an array

如果我有下面几行代码,为什么b-a = 2?

int a[] = {1,2,3,4,5}; 
int *b = &(a[2]); 

稍微详细说明 Eugene 的回答,a 是指向数组开头的指针,a[2]*(a+2) 相同。

所以你可以说 & 在取消引用指针时“取消”了 * 然后查看它指向的元素的地址。所以*b = &(a[2]) = &(*(a+2)) = a+2。 因此b-a=2