多次调用方法(C ++)

时间:2017-10-05 21:06:21

标签: methods

所以,我有一个主要的方法

int main () {
 int x = 0;
 inc(x);
 inc(x);
 inc(x);
 std::cout << x << std::endl;
}

我试图让我的输出成为&#39; 3&#39;但无法弄清楚为什么每次inc(x)被称为x重置为0。

我的公司方法:

int inc(int x){
    ++x;
    std::cout << "x = " << x << std::endl;
    return x;
}

我的输出:

&#13;
&#13;
    x = 1
    x = 1
    x = 1
    0
&#13;
&#13;
&#13;

为什么x会在每次调用inc(x)后重置,如何在不编辑主函数的情况下解决此问题

3 个答案:

答案 0 :(得分:1)

而不是

inc(x);

我认为你需要

x = inc(x);

你现在可能会打耳光。

答案 1 :(得分:0)

你正在过去&#34; x&#34; to inc()by value,因此inc()中所做的更改在main()中不可见。

答案 2 :(得分:0)

如果要更改x,则需要通过引用传递它,而不是作为值传递。此外,inc()需要返回void才有意义。这是一个例子。

// adding & before x passes the reference to x
void inc(int &x){
    ++x;
    std::cout << "x = " << x << std::endl; 
}
int main() {
    int x = 0;
    inc(x);
    inc(x);
    inc(x);
    std::cout << x << std::endl;
}

打印

x = 1
x = 2
x = 3
3