2015-04-14 117 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