2012-03-25 97 views
1

我不斷收到這2個錯誤在我的代碼C++初學者的錯誤,作業

In function 'int main()': 
error: invalid initialization of non-const reference of type 'int&' from a temporary of type 'int' 
error: in passing argument 1 of 'void swapInt(int&, int&)' 

但我有真正的問題是swapInt。我需要接受2個整數 ,然後用它們的參數切換它們的值,所以曾經是a的現在b 以及曾經b的現在是a。請幫忙!

void swapInt (int &a, int &b); 

int main() { 
    int a = 1; 
    int b = 2; 

    swapInt(1, 2); 
    cout << a << " " << b; 

    return 0; 
} 

void swapInt (int &a, int &b) { 
    int c = a; 
    a = b; 
    b = c; 
    //cout << a << " " << b; 
} 
+0

你聲明變量'a'和'b',但是你不使用它們。您將文字傳遞給函數(1和2),而不是引用它們存儲的整數。嘗試在'main()'的開頭設置'a = 1'和'b = 2',然後調用'swapInt(a,b)'。 – ely 2012-03-25 02:00:09

+1

你必須明白,你在'main'中定義的'a'與'swapInt'中的'a'無關......後面的概念被稱爲「變量範圍」。 – 2012-03-25 02:03:41

+1

小心點。交換1和2將大大延長時空結構,所有公式如1 + 1 = 2會變成2 + 2 = 1!你不想和宇宙一起玩這樣的遊戲! – 2012-03-25 02:17:28

回答

4

你的函數與變量的地址一起工作,但你傳遞的是數字常量。你需要在變量傳遞,如:

void swapInt (int &a, int &b); 

int main() { 
    int a = 1; 
    int b = 2; 

    swapInt(a, b); 
    cout << a << " " << b; 

    return 0; 
} 

void swapInt (int &a, int &b) { 
    int c = a; 
    a = b; 
    b = c; 
    //cout << a << " " << b; 
} 
+0

以及賦值說:swapInt第三個函數是一個名爲swapInt,它接受兩個int參數。它不會返回任何東西。這個功能的目的是交換兩個參數的值。也就是說,如果調用swapInt時,一個變量的值爲5,另一個值爲10,則在函數調用結束後,第一個變量的值將爲10,第二個變量的值爲5.您需要本地在交換髮生時,函數中存儲一個值的變量。所以我應該怎麼做,如果我必須能夠打電話給他們 – user1290726 2012-03-25 02:03:22

+0

@ user1290726,我發佈的內容將完成該任務所要求的內容。我不明白你評論中的問題。 – mowwwalker 2012-03-25 02:13:23

+0

哎呀,粘貼到錯誤的窗口...對不起... – 2012-03-25 02:17:10

0

聲明該功能爲「傳遞按引用」因此,預計變量,當你調用的函數。

您不能將整數值傳遞給通過引用接受參數的函數。