C语言题求解,详细点,谢谢!!!

voidfun(intn,int*s){intff;if(n==1)*s=n+1;else{fun(n-1,&f);*s=f;}}main(){intx=0;fun(4,... void fun( int n,int*s)
{
intf f;
if(n==1) *s=n+1;
else{fun (n-1,&f);*s=f;}}
main()
{
int x=0;
fun(4,&x);
printf("%d\n",x)
}

怎么解,我只能看到fun(3,&f)然后怎么带,后面的*s=f在fun的后面怎么带入,f没给值啊?? 详细点,谢谢!!
为什么不为0?参编和形变
展开
 我来答
yuwenchenglo
2013-08-07 · 超过27用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:76.8万
展开全部
继续先下递归调用 *s指向f的地址 最后fun(1,&f) *s=f+1=2后 f与*s是相等的都为2
所以最后f(4,&x) 后x地址内的数为*s指向的数就是2
更多追问追答
追问
没有定义X为指针啊,只是形参里,X输出的值为什么不是0?还有*s=f那个怎么调用?
追答
&x不是取地址吗,就是将*s指向了x的地址了   fun(1,&f) 的结果是*s=n+1=2;回到
fun(2,&f),*s=f 由于上面的*s与f是同一地址所以f就是2 这条赋值就是*s=2 回到f(3,&f)同fun(2,&f)回到f(4,&f)同上 最后*s=2即x的地址的东西被修改了 x=2
新光淘宝
2013-08-07
知道答主
回答量:12
采纳率:0%
帮助的人:6.4万
展开全部
你定义的f属于局部变量,不是全局变量,所以f的值当然不变。
追问
看下我的问题好不!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式