2015-04-14 86 views
1

在下面的代码中,为什么必须在int readNumber()的内部声明int nInteger,但int nAnswer必须在void writeAnswer()的()部分内声明?在()中声明int nInteger或在函数体内声明int nAnswer会导致IDE抱怨所述函数的参数太少。为什么会发生?C++中的函数和变量声明

我使用的代码::块和包含的MinGW在Windows 7

#include <iostream> 

int readNumber() 
{ 
    using namespace std; 
    cout << "Please enter an integer: "; 
    int nInteger; 
    cin >> nInteger; 
    return nInteger; 
} 

void writeAnswer(int nAnswer) 
{ 
    using namespace std; 
    cout << "The sum is: " << nAnswer << endl; 
} 

int main() 
{ 

    int x; 
    int y; 
    x = readNumber(); 
    y = readNumber(); 

    writeAnswer(x+y); 

    return 0; 
} 
+2

您是否阅读过关于函数的一些介绍性资料?如果没有,请这样做。 – chris

+2

你似乎不理解局部变量和传递变量之间的区别 – EdChum

+2

我想你必须阅读[一本好的C++书](http://stackoverflow.com/q/388242/3959454) –

回答

0

所以basicly的INT readNumber()函数不需要传递任何参数。您声明一个局部变量,以便该函数知道将键入的值分配到哪里。声明变量int nInteger,然后在下一行中通过调用cin >> nInteger为其分配值。如果没有变量声明,那么你的程序将不知道你在哪里存储你输入的值。

你可以把它当作苹果篮子。你有一个篮子,但没有苹果,然后有人给你两个苹果,你把它放进篮子里。最后return声明就像你把篮子给别人一样。

函数void writeAnswer另一方面需要传递一个参数。正如你可以在局部变量中看到的那样。它所做的只是简单地显示"The sum is: PASSED_ARGUMENT"。所以基本上,如果你打电话给你的writeAnswer函数编号为6,如writeAnswer(6),它会写"The sum is: 6"

+0

谢谢@Dashovsky。说实话,我仍然对为什么我必须在'int'类型函数的函数体中和'vois'类型函数的()内声明一个变量感到困惑。但现在我对我应该进一步研究的东西有一个理解。再次感谢您的回答! – Flip