int a=520;
int *p;p=&a;
printf("%d %d\n",a,*p);
printf("%p %d\n",a,p);
printf("%p %p",p,*p);
我的之前的理解:p是一个指针变量,他存储着a的地址,所以输出a的%p和输出p的%d在数值上是相等的,p的%p就是p变量的本身的地址。
可是从结果来看,p的%d和p的%p是一样的,这是不是代表着p的%p是a变量的地址,如果是这样,那么指针变量p的地址怎么获取?
指针变量本身没有地址,只有指向具体的数据地址才有效的!因此& a和p是一样的!
指针变量p的地址得用 &p 获取
p是一个指向a的指针,它的值是a的地址。
而它自己的地址,则是指针的指针,也就是再取指针运算
这么写,"%p", &p 即是p 的地址。供参考:
#include <stdio.h>
int main()
{
int a=520;
int *p;
p=&a;
printf("%d %d\n",a,*p);
printf("%p %p\n",&a,p);
printf("%p %p",p,&p);
}
无法解决该问题。