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

#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;
}

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