所以,我有一个主要的方法
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;
}
我的输出:
x = 1
x = 1
x = 1
0
&#13;
为什么x会在每次调用inc(x)后重置,如何在不编辑主函数的情况下解决此问题
答案 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