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
如果我有下面几行代码,为什么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