int函数参数不能正常工作

时间:2015-09-08 06:41:35

标签: c++

我试图用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

3 个答案:

答案 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)

如果我理解你的问题:

有两种方法可以做到。

  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;
    }
    
  2. 通过引用传递值。你可以阅读它here,但通常是关于传递指向该值的指针。这意味着无论你对正在传递的论证做什么,都会发生在原始的变种上。

  3. 示例:

        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;
        }