c++ - 关于简单 C++ 函数的混淆

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

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

最佳答案

main代码可以看出,add10的返回值被丢弃了。这意味着您也可以将其声明为 void 并且不返回任何内容。

您不想修改作为参数传递给您的函数的值,而是希望通过引用传递它:

void add10(int& n)

这将允许您对 add10 函数中的 n 执行明显的修改。

考虑阅读一些关于通过引用传递的教程,here是一个例子。

Here是关于按值传递参数和按引用传递参数之间的区别的 SO 问题。

关于c++ - 关于简单 C++ 函数的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43434622/

相关文章:

c++ - 为什么堆栈溢出会导致总线错误 10 而不是段错误

python - 输入数字500以下的最大幂

javascript - 为什么函数的参数对象不是 Javascript 中的数组?

c++ - 从Qt C++调用已编译的C库函数会产生意外行为

c++ - ADODB 记录集中的访问冲突关闭

javascript - Qunit 不可见的函数

c++ 指向函数的指针没有改变

c++ - 文本字段如何响应 <Enter>

c++ - 用 Cpp 或其他快速语言反转大型哈希表

c++ - 将像素缓冲区类型从 1555 转换为 5551(C++、OpenGL ES)