int main(){
int a=5;
int *p;
p=&a;
int **pp;
pp=&p;
printf("变量a的地址为:%d\n",&a);
printf("一级指针的值(变量a的地址)为:%d\n",p);
printf("一级指针的值为(变量a的地址):%d\n",*pp);//【*二级指针】表示一级指针的值
printf("一级指针的地址为:%d\n",&p);
printf("二级指针的值(一级指针的地址)为:%d\n",pp);
}
观察此代码,分析运行结果:
不难看出,
二级指针前加*表示的是一级指针的值;
二级指针本身表示一级指针的内存地址;
二级指针前加**和一级指针前加*等价,表示所指int型变量的值。
注:如果要写一个函数修改一个指针的值(如用到malloc这种返回值是一个指针的函数),需要使用二级指针进行传参,并在具体函数中用【*二级指针名】来给一级指针的值赋值。