我试图用C ++制作一些东西,但我遇到了问题。我有这段代码:
#include <iostream>
#include <string>
//---MAIN---
using namespace std;
int af1 = 1;
int af2 = 1;
void lettersort(int cnt1) {
cout << "RESULT:" << cnt1 << endl;
cnt1++;
cout << "RESULT WHEN+:" << cnt1 << endl;
cout << "RESULT IN GLOBAL INT:" << af2 << endl;
}
int main()
{
lettersort(af2);
return 0;
}
那么有没有什么方法可以让cnt1++
影响af2
,让它更大?我不想直接使用af2++
,因为我有时会使用af1
。
答案 0 :(得分:3)
目前您只是按价值<{em>}将af2
传递给cnt1
,因此对cnt1
的任何更改都是函数lettersort
的本地更改}。为了获得您想要的行为,您需要通过引用传递cnt1
参数。变化:
void lettersort(int cnt1)
为:
void lettersort(int &cnt1)
答案 1 :(得分:2)
您正在通过值传递参数。即,您将af1
的值复制到lettersort
中的局部变量。然后递增该整数,并在函数结束时处理,而不影响原始af1
。如果您希望该函数能够影响af1
,则应通过引用传递参数:
void lettersort(int& cnt1) { // Note the "&"
答案 2 :(得分:1)
如果我理解你的问题:
有两种方法可以做到。
使 lettersort 函数返回新值,并将其放入af2
int lettersort(int cnt1) {
cout << "RESULT:" << cnt1 << endl;
cnt1++;
cout << "RESULT WHEN+:" << cnt1 << endl;
cout << "RESULT IN GLOBAL INT:" << af2 << endl;
return cnt1;
}
int main()
{
af2 = lettersort(af2);
return 0;
}
通过引用传递值。你可以阅读它here,但通常是关于传递指向该值的指针。这意味着无论你对正在传递的论证做什么,都会发生在原始的变种上。
示例:
void foo(int &y) // y is now a reference
{
using namespace std;
cout << "y = " << y << endl;
y = 6;
cout << "y = " << y << endl;
} // y is destroyed here
int main()
{
int x = 5;
cout << "x = " << x << endl;
foo(x);
cout << "x = " << x << endl;
return 0;
}