关于简单C ++函数的困惑

时间:2017-04-16 06:57:52

标签: c++ function

我目前仍然坚持这个问题,但不知道我做错了什么:

完成函数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;
}

有人可以帮我解释如何修复我的代码以及我做错了什么?谢谢!

3 个答案:

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