回 帖 发 新 帖 刷新版面

主题:关于return的疑问

关于函数return返回值,网上的帖子
一个函数可以有多个return语句,返回的变量里也可以含有多个值。
不过,无论怎样,return语句只会被调用一次(后面的都不会被执行),而且在return语句里,所返回的变量也只能有一个。

可是我刚编的这个程序,却可以正常运行,为什么呢

int s1,s2,s3,v;
int vs(int a,int b,int c)
{   v=a*b*c;
    s1=a*b;
    s2=a*c;
    s3=b*c;
  [color=FF0000]  return v;
    return s1;
    return s2;
    return s3;
}[/color]
main()
{   int a,b,c;
    printf("input a,b,c:");
    scanf("%d %d %d",&a,&b,&c);
    vs(a,b,c);
    printf("v=%d s1=%d s2=%d s3=%d\n",v,s1,s2,s3);
}

回复列表 (共3个回复)

沙发

请注意return的含义,是将调用结果返回给调用的地方。(return共有两层含义,一是返回调用处继续执行下面的程序,二是将函数的调用结果反馈,详细见《易学C++》第六章)现在调用的地方vs(a,b,c)中没有形如变量temp=vs(a,b,c);的写法,也就是说函数的返回值并没有被保存。那个return v的值被白白地放弃掉了。

至于为什么可以正常输出v,s1,s2和s3是因为这些变量是全局的,所以任何函数都能访问和修改。在vs中修改了他们的数值,在main中自然也就输出正确了。如果把他们分别声明在函数体内,那肯定就无法输出正确结果了。

板凳

也不是非常的清楚,不过还是学习了

3 楼


 1楼解释的很好,这里顶一下

我来回复

您尚未登录,请登录后再回复。点此登录或注册