#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 显然不应该一样..
但它们就是一样了,这我就无法理解