下面这个例子就是最好的说明,我想出来的嘻嘻。
有三个函数
f函数让一个p和a相等,然后企图通过改变p的方式来改变a
g函数更狠,都不用p指针,上来就直接改变a
k函数通过指针的指针来改变,最终终于改变了a的值
#include <bits/stdc++.h>
using namespace std;
void f(int *a)
{
int *p,i=5;
p=a;
p=&i;
}
void g(int *a)
{
int i=5;
a=&i;
}
void k(int **a)
{
int i=5;
*a=&i;
}
int main()
{
int *a;
a=NULL;
f(a);
if(a==NULL)
printf("this time point a equals null.\n");
else
printf("this time point a doesn't equal null.\n");
a=NULL;
g(a);
if(a==NULL)
printf("this time point a equals null.\n");
else
printf("this time point a doesn't equal null.\n");
a=NULL;
k(&a);
if(a==NULL)
printf("this time point a equals null.\n");
else
printf("this time point a doesn't equal null.\n");
return 0;
}