我制作了一个调用此函数的程序。我知道这是因为“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;
}
答案 0 :(得分:7)
多个错误。首先,如果您希望修改参数(更准确地说,修改在函数范围之外有效),您必须通过引用传递值:
int strength(int &a, int &s, int &i)
其次,您似乎关注return a; return s;
返回两个值。它没有 - 遇到的第一个return
立即退出该函数。
答案 1 :(得分:2)
值仅在函数内更改。变量通过值而不是引用传递。 使用引用作为参数。
int strength(int& a, int& s, int& i)
答案 2 :(得分:1)
你正在经历价值。您需要pass a pointer到调用者中分配的包含您要修改的数据的内存。
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);