更新时间2019-07-26 10:21:12
int k=7,m=5;
void f(int **s)
{
int *t=&k;
s=&t;*s=&m;
printf("%d,%d,%d,",k,*t,**s);
}
void main()
{
int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d ",i,*p,**r);
}
最后输出7,5,5,3,3,3
void f(int **s)
{
int *t=&k; //t的内容为k的地址
s=&t; //s的内容为t的地址
*s=&m; //相当于,t的内容为m的地址
//那么*t就为m的值,也就是5
//同样**s=*t=5
//k不变,所以以下结果为7,5,5,
printf("%d,%d,%d,",k,*t,**s);
}
int main()
{
int i=3,*p=&i,**r=&p;
//p为i的地址,那么*p=i=3
//r为p的地址。**r=*p=3
f(r);
//f(r)不会改变r的值
//若f中没有 s=&t; 那么,*s可以改*r的值
//所以这段结果是3,3,3
printf("%d,%d,%d
",i,*p,**r);
}