关于简单C 功能的混乱

Confusion regarding simple C++ functions

本文关键字:功能 混乱 简单 于简单      更新时间:2023-10-16

我目前被困在这个问题上,但不知道我在做什么错:

完成函数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进行明显的修改。

考虑阅读有关通过引用传递的一些教程,这是一个示例。

这是一个关于按值和参考传递参数之间的差异的问题。

您需要一个参考... C 将制作变量n的副本,而无论您在函数add10中做什么,都会使原始值都不适用。

int add10(int& n)
{
    return n += 10;
}

更好的方法可能是返回void,因为您在主要方法中的代码也没有抓住结果...

void add10(int& n)
{
    n += 10;
}

如果您只想打印可以

的值
cout<<add10(n);

如果您需要未来使用的价值,则正确的方法是传递其参考,以便是

add10(n);

您的方法签名将为

void add10(int &n)