二级指针变量,保存指针的地址,代码如下:
int main()
{
int a = 10;
int b = 20;
int* p = &a;//a(int)->&a(int *)
*p = 100;//a=100;
p = &b;
*p = 200;//b = 200;
int** pp = &p;//p (int *)->&p (int * *) 二级指针变量pp
*pp = &a; //p = &a;
**pp = 1000;//*(*pp)==*p ==a; a=1000;
*pp = &b;
**pp = 2000;
// ***pp = 50;//错误的
return 0;
}
通过传递二级指针并解引用,修改指针的内容,代码如下:
void Fun(int** p) {
*p = NULL;
}
int main() {
int a = 10;
int* p = &a;
printf("%d", *p);
//p=NULL;//p保存一个无效地址,不能解引用
//printf("%d", *p);//崩溃
Fun(&p);//调用函数后,p为空
printf("%d", *p);//解引用,崩溃说明修改了指针p的值
return 0;
}