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?参编和形变 展开
{
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?参编和形变 展开
2个回答
展开全部
继续先下递归调用 *s指向f的地址 最后fun(1,&f) *s=f+1=2后 f与*s是相等的都为2
所以最后f(4,&x) 后x地址内的数为*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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询