**关于如何理解指针变量的地址和存储的值的问题
C语言程序代码:
//测试指针地址和指针的指针的地址
#include<stdio.h>
int main(void)
{
//定义
int i = 1, a[5] = {10,20,30,40,50};
int *p1;
int **p2;
int *p3;
int **p4;
//指针初始化
p1 = &i;
p2 = &p1;
//指针指向一个数时
printf("p1存储的地址p1=%p,p1自身的地址p1=%p,p1指向的地址的值*p1=%d\n", p1,&p1,*p1);
printf("p2存储的地址*p2=%p,p2自身的地址p2=%p,p2指向的地址指向的值**p2=%d\n",*p2,&p2,**p2);
//指针指向一个数组时
p3 = a;
p4 = &p3;
printf("p3存储的地址p3=%p,p3自身的地址p3=%p,p3指向的地址的值*p3=%d\n", p3, &p3, *p3);
printf("p4存储的地址*p4=%p,p4自身的地址p4=%p,p4指向的地址指向的值**p4=%d\n", *p4, &p4, **p4);
}
运行结果:
问题点:
p2为指针的指针,p2应该存储p1自身的地址,即应该为: 0057FA68但根据运行结果,p2却存储了p1指向的地址0057FA90
p4类似
还望赐教,不胜感激!