c++中关于二级指针的问题!!请帮忙一下

#include<iostream.h>intk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;cout<<k<<""<<*t<<""<... #include<iostream.h>
int k=7,m=5;
void f(int **s)
{
int *t=&k;
s=&t;
*s=&m;
cout<<k<<" "<<*t<<" "<<**s<<endl;
}
void main()
{
int i=3,*p=&i,**r=&p;
f(r);
cout<<i<<" "<<*p<<" "<<**r<<endl;
}
我看不懂s=&t;
*s=&m;麻烦解释一下,还有*t,和**s的值是怎么出来的啊
展开
 我来答
百度网友e43033c
2014-03-27 · TA获得超过1130个赞
知道小有建树答主
回答量:933
采纳率:100%
帮助的人:935万
展开全部

形参其实就是参数的一个临时变量,这你应该知道吧,就是说虽然 r 传递给 s 了,但是 r与s 并不是一回事,只是一开始,r 与 s 指向相同。但是后面改变了s的指向(s=&t),r 与 s 就指向不同了,所以,对s的操作也不会改变r了,因此,main中输出  3 3 3

而你的函数f中 ,s指向了t,则*s其实就是指针t了,那么 *s = &m,就是t = &m,所以,f 函数中输出结果为  7 5 5 (k 的值没变,t指向m, s指向 t)

百度网友c6fd552
2014-03-27 · 超过19用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:44.3万
展开全部
s=&t; s作为一个(二级)指针,其值是一个地址,指向临时变量——指针t;而前int *t=&k是指针t指向k)
*s=&m; 指针s指向的单元(即指针t)的值(地址)又被改为指向m;
上述执行完后,*t为m的值,**s也为m的值;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kongcup
2014-03-27 · TA获得超过442个赞
知道小有建树答主
回答量:149
采纳率:62%
帮助的人:82.4万
展开全部
t是指针,s是指向指针的指针,s=&t,就是去指针t的地址,赋值给s;
t是指针,*t,就是指针指向的内容
s是指向指针的指针,**s,就是指针的指针指向的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式