首页 > 电脑

c语言地址之间传递有什么规则,比如下题,如何得出的答案,求详解

更新时间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);
}


相关标签:c语言

上一篇:有什么数据线耐用一点啊我买了好多都不太好有没有用过龙之怒的?

下一篇:我家电脑这是怎么回事啊