-2

我做了一个调用这个函数的程序。我知道这是因为“Int Strength 已被调用”出现在输出框中。但是,它不会改变我告诉它要做的值。我希望它从 main() 获取整数值,然后使用它们并返回新值。我正在使用一个只包含“int strength(int a, int s, int i)”的头文件

int strength(int a, int s, int i)
{
    using namespace std;
    cout << "Int Strength has been called" << endl;
    a = a + i;
    s = s - i;
    return a;
    return s;
}
4

3 回答 3

7

多个错误。首先,如果您希望修改参数(更准确地说,修改在函数范围之外有效),您必须通过引用传递值:

int strength(int &a, int &s, int &i)

其次,您似乎担心return a; return s;返回两个值。它没有 - 第一个return遇到的立即退出该函数。

于 2013-03-04T16:35:22.337 回答
2

值仅在函数内更改。变量通过值而不是引用传递。使用引用作为参数。

 int strength(int& a, int& s, int& i)
于 2013-03-04T16:35:29.767 回答
1

你是按价值传递的。您需要将指针传递给调用者分配的包含您希望修改的数据的内存。

void strength(int *a, int *s, int i)
{
    using namespace std;
    cout << "Int Strength has been called" << endl;
    *a += i;
    *s -= i;
}

然后这样称呼它:

a = 1;
s = 2;
i = 3;

strength(&a, &s, i);
于 2013-03-04T16:35:11.140 回答