+-------------------------------------+
|{ ptr[0] ptr[1] } {ptr1[0],ptr1[1]} |
| ^ ^ ^ |
| | | | |
| ptr ptr+1 | |
| | | |
| &ptr &ptr+1 |
+-------------------------------------+
很容易理解ptr
,指针是这个数组的第一项地址,ptr+1
指针是数组的第二项。&ptr
,它是一个指针指向a int array[2]
int 是a int (*x)[2]
,所以&ptr +1 表示地址移动a int array[2]
。
这是一个测试代码:
#include <stdio.h>
int main()
{
int ptr[2];
int i;
for (i =0; i <3; ++i)
printf("ptr + %d is : %p\n",i,&(ptr[i]));
printf("\n&ptr +1 : %p\nptr+1 : %p\nptr : %p\n",&ptr+1,ptr+1,ptr);
}
丝网印刷
ptr + 0 is : 0xbf892614 <---the same as ptr base address
ptr + 1 is : 0xbf892618 <---the same as prt+1 4 byte add
ptr + 2 is : 0xbf89261c < --the same as &ptr +1 4 byte add
&prt +1 : 0xbf89261c
ptr+1 : 0xbf892618
ptr : 0xbf892614