我目前仍然坚持这个问题,但不知道我做错了什么:
完成函数add10()以生成程序 可以为每个用户输入整数加10。 (注意:您应该只更改函数add10()的代码。不要更改其他代码。)
提供给我的原始代码是:
#include <iostream>
#include <iomanip>
using namespace std;
//TODO: complete this function, do NOT change other code
void add10()
{
}
//Please do NOT change the following code
void main()
{
int n;
cin >> n;
add10(n);
cout << n;
}
我已经编辑了上面的代码,如下所示,但它仍然返回与用户输入相同的值:
#include <iostream>
#include <iomanip>
using namespace std;
//TODO: complete this function, do NOT change other code
int add10(int n)
{
return n += 10;
}
//Please do NOT change the following code
void main()
{
int n;
cin >> n;
add10(n);
cout << n;
}
有人可以帮我解释如何修复我的代码以及我做错了什么?谢谢!
答案 0 :(得分:2)
从main
代码中可以看出,add10
的返回值被丢弃。这意味着您也可以将其声明为void
并且不返回任何内容。
而是要修改作为参数传递给函数的值,您希望通过引用传递它:
void add10(int& n)
这将允许您对n
函数中的add10
执行明显的修改。
考虑阅读一些关于通过引用传递的教程,here就是一个例子。
Here是关于按值和引用传递参数之间差异的SO问题。
答案 1 :(得分:0)
如果您只想打印可以
的值cout<<add10(n);
如果您需要将来使用的值,正确的方法是传递它的引用,这样就可以
add10(n);
您的方法签名将是
void add10(int &n)
答案 2 :(得分:0)
你需要一个引用... c ++将复制变量n,无论你在函数add10中做什么都保持原始值不被修改......
int add10(int& n)
{
return n += 10;
}
更好的方法可能是返回void,因为main方法中的代码没有抓住那个结果......
void add10(int& n)
{
n += 10;
}