C语言 递归函数 传参问题

#include

int x = 0;
int function(int num);

int main()
{
int num = 0;
int y = function(num);
printf("%d\n",num);

return 0;

}

int function(int num)
{
//printf("%d ",num);
//printf("%d ",x);
while(x<100)
{
x++;
num+=x;
function(num);
//printf("%d ",num);
//printf("%d ",x);

}

return num;

}

为什么最后会输出num的值为0

2个回答

#include <stdio.h>

int x = 0;
int function(int num);
int main()
{
int num = 0;
int y = function(num);
printf("%d\n",y);
return 0;
}
int function(int num)
{
//printf("%d ",num);
//printf("%d ",x);
if(x<100)
{
x++;
num+=x;
return function(num);
//printf("%d ",num);
//printf("%d ",x);
}

return num;
}
Fskingmax
Fskingmax 回复贵阳挖掘机马善福,自备车辆专业挖游泳池: 谢谢指导
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 问题解决,请采纳
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Fskingmax: 否则结果无法传回去.
大约一年之前 回复
Fskingmax
Fskingmax 能指点一下为什么要加个return 吗
大约一年之前 回复
Fskingmax
Fskingmax 谢谢大佬指点
大约一年之前 回复

你写的int function(int num)
函数传入的是形参,是不能改变num的值的,会产生一个临时变量对num的数值进行复制
最后num的值其实没有改变。
要是一定要改的话,可以用指针或者引用。
望采纳!

Fskingmax
Fskingmax 理解了,非常感谢你的指导
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐