以下是2个程序
第一
#include<stdio.h> void main() { int a[5]={1,2,3,4,5}; int *p; p=&a; printf("%u %u",p,p+1); }
第二
#include<stdio.h> void main() { int a[5]={1,5}; printf("%u %u",&a,&a+1); }
现在,在两个程序中.我已经在第一个代码中打印了& a的值,并且直接在第二个代码中打印.
为什么结果不一样?
我得到的答案是.
for first 3219048884 3219048888 for second 3219048884 3219048904
解决方法
& a的类型是int(*)[5].因此& a 1是一个比一个更深入的指针.然而,p的类型是int *,因此p 1是比p更int 1的指针.