我來自C,並且我已經瞭解到,如果我們將一個參數傳遞給一個函數,它只會使用它的值來複制它,所以如果我們改變這個變量值,那麼變量傳遞給函數的內容不會改變,因爲它們顯然是2個不同的變量,只有2個不同的地址具有相同的值。 所以在C中,如果我們想要改變傳遞給函數的參數,我們會傳遞一個帶參數地址的指針。現在通過引用和指針傳遞參數
,在C++中,我們可以做同樣的,但我們也可以這樣做:
void changeValue(int& n)
{
n = 10;
}
不僅如此,我們還沒有取消引用分配一個值,但是,當我們傳遞變量到函數我們按原樣傳遞它(&)運算符。 所以我不明白這裏有什麼區別? 如果我們不去引用它甚至是一個指針?另外,如果我們按照原樣傳遞它,那麼我們是如何通過引用來傳遞的呢? 有人可以幫我清理一些東西嗎?
與什麼有什麼不同?函數簽名表示參數是通過引用傳遞的,所以它是。 – juanchopanza 2014-09-22 15:14:15
這個線程有幫助嗎? http://stackoverflow.com/questions/410593/pass-by-reference-value-in-c – taocp 2014-09-22 15:14:44
簡單的答案是'C'只有傳遞值,而C++有傳遞值和傳遞-引用。所以你應該學習後者,因爲這個概念在'C'中不存在。此外,試圖通過使用'C'作爲指導來學習C++ - 這可能適用於某些事情,但是如果這個概念根本不存在於'C'中(例如傳遞引用),那麼,就像現在的情況一樣,我會感到困惑。 – PaulMcKenzie 2014-09-22 15:26:03