c语言二级指针问题

#include<stdio.h>intk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t... #include<stdio.h>
int k=7,m=5;
void f(int **s)
{ int *t=&k;
s=&t; *s=&m; printf("%d,%d,%d,",k,*t,**s);
}
main()
{ int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d,",i,*p,**r);
}为什么答案是7,5,5,3,3,3
展开
 我来答
KEY徒
2014-03-23
知道答主
回答量:22
采纳率:0%
帮助的人:17.4万
展开全部
7——k的值

5——s=&t,s是t的地址,即s指向的内容是t(一个指向整型变量的指针);
*s=&m,s指向的内容是m的地址,又因为s指向的内容是t,所以t的值改变成为m的地址,即t 指向的内容为m(一个整型变量),因此*t(t指向的内容)的值为5

5——**s=*(*s)=*t
3——i的值
3——int *p=&i 等价于 int *p;(定义一个整形指针p)p=&i;(p的值为i的地址),所以*p的值为3
3——int **r(定义一个指针r,r指向的内容是一个整形指针),r=&p(r的值为p的地址,即r指向的 内容是一个整形指针p,其中p的值是i的地址)**r=*(*r)=*p

说的不太清楚请见谅,我指针也是属于一知半解,不过因为指针直接访问内存,所以请一定理解好它,否则以后编写C语言的程序很容易造成编译器检查不出的错误导致大范围的人工查错。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式