首先把代码贴上来:
#include <stdio.h> #include<windows.h> int f(int **iptr){ int a = 100; *iptr = &a; return 0; }
int main() {
int x = 7;
int *n;
int **m;
n=&x;
m=&n;
printf("m: %d ",**m);
f(m);
printf("m: %d ",**m);
Sleep(1000);
printf("m is %d ",**m);
return 0;
}
然后我把执行的结果贴上来:
被红颜色框起来的地方就是坑。
这个双重指针**m所指向的值是在函数f中被改变成了100,但是函数f执行结束之后,**m所指向的变量a被释放。结果变成了0。
编译器环境是mingw -w64