关于

2017-04-16 133 views
0

我目前停留在这个问题,但不知道简单的C++函数的困惑是什么,我做错了:关于

完成的功能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; 
} 

是否有人可以帮我解释一下如何解决我的代码和我在做什么错?谢谢!

回答

2

正如您从main代码中看到的那样,add10的返回值将被丢弃。这意味着你可以只声明它void并且什么都不返回。

而是修改传递给你的函数的参数值,你想通过引用传递它:

void add10(int& n) 

这将允许你在add10功能进行明显修改的n

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

Here是关于通过价值和参考传递参数之间的差异的SO问题。

+0

好吧,我想我明白你的意思。在价值传递和引用传递的概念之间,我不太清楚。如果不是太麻烦,你能简单地解释两者之间的区别吗? –

+1

@RajHeera我可以,但这是另一个单独的问题,已经回答了很多次,所以我只是添加一个链接到我的答案 – Ap31

+0

完美,感谢您的宝贵帮助。将更多地理解这些基本概念。 –

0

如果你只是想打印的价值,你能

cout<<add10(n); 

如果你需要为将来使用的价值,正确的方法是通过它的一个参考,所以这将是

add10(n); 

你的方法签名会

void add10(int &n) 
+0

根本不是。问题是关于参考而不是返回值。 – N0un

+0

@ N0un谢谢你告诉我,我甚至没有注意到我有一段时间是多么的错误。 –

+0

@ Dinos_12345 'cout << add10(&n);' - 这不是通过引用传递的,它传递的是地址,所以方法应该指向一个指向整数的指针作为参数 – maxx777

0

你需要一个参考... C++将变量n的副本,再走克原始值未修改无论你在函数ADD10做什么...

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

更好的方法可能是返回void因为在main方法代码没有抓住这一结果要么...

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

原始函数应该返回一个'void'。 – N0un

+0

@ N0un阅读我的答案 –

+0

阅读他的问题,原始原型已经是'void add10()'。 – N0un