#include<stdio.h>
int main(void){
int arr[] = {1,2,3};
printf("arr=%p,&arr=%p\n",arr,&arr);
printf("*arr=%d,*&arr=%d(%p)\n",*arr,*&arr,*&arr);
return 0;
}
然而
#include<stdio.h>
int main(void){
int a = 0;
int *p = &a;
int *pp = &p;
printf("&a=%p,p=%p,pp=%p\n",&a,p,pp);
return 0;
}
这里 pp 和 p 的%p 是不相同的.
对于第二个程序不相同我就很好理解了,p 中存放变量 a 的地址,pp 存放指针 p 的地址...
而对于第一个程序,arr 存放数组首元素地址,&arr 则是变量 arr 的地址.&arr 和 arr 显然不应该一样..
但它们就是一样了,这我就无法理解
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.