Fskingmax
2019-07-29 17:15
采纳率: 66.7%
浏览 489

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条回答 默认 最新

  • blownewbee 2019-07-29 17:39
    已采纳
    #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;
    }
    
    点赞 打赏 评论
  • 倒三五六 2019-07-29 20:47

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

    点赞 打赏 评论

相关推荐 更多相似问题