回 帖 发 新 帖 刷新版面

主题:问一个C++的题

我遇到一个C++的题弄不懂,请清楚的人帮我解释:
   若定义函数:
      int f(int x)  {x++;retern x;}
   执行以下语句:
    int a=5; f(a)+f(a);
   问a的值是多少?    正确答案是5  
  我以为答案是7,可是输入电脑运行后结果却是5,我不清楚为什么两次调用返回值都没有加一?

回复列表 (共3个回复)

沙发

怎么想也不会是7啊.
int a = 5;
然后你调用了那个 f 函数, 而此传递方式纯粹是单向的值传递, 当然不会将 a 的值改变哪.

板凳


建议你看一看教材中关于函数值传递的讲解 
c/c++是值传递,也就是说只是将a的值(实参)传递给形参(x)。形参在内存中的另一个存储区域。但是在函数执行时候,只是将形参(x)的值进行运算。并没有改变实参(a)的值,也就是说,a的值不变。但是你可以通过这样改一下:
a=f(a);
a=f(a);
这样a就等于7了

3 楼

哦!我懂了!十分感谢两位的指点!

我来回复

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