int main()
{
int x=3;
int *p=&x;
int **px=&p;
printf("%d\n",x);
printf("%d\n",&x);
printf("%d\n",p);
printf("%d\n",&p);;
printf("%d\n",&*px);
printf("%d\n",*px);
printf("%d\n",px);
return 0;
}
3
6356728
6356728
6356724
6356724
6356728
6356724
测试结果附上
首先要知道int *p=&a与int *p;p=&a;这两段代码是一样的意思,只是写法不同。
简单解读:
通过测试结果我们可以得到指针赋值取地址的一些规律原理,这段代码中的p为x的地址,&p为指针p自身的地址,px为p的地址,*px为p的地址的值也就是x的地址,**px是指向p指针指向的x变量的值。二级指针的使用主要是对一级指针进行修改,例如,在二叉树的创建过程中。
对于赋值问题尤其是指针问题,自己写代码进行编译测试是学习指针等问题的有效方法。