2017-05-14 122 views
-2

x和y的最終值應該是x = 4和y = 21。我明白爲什麼y = 21,但是爲什麼x = 4?如果「a = 5」不將值更改爲5?謝謝函數中變量的變化值C

int f(int a, int *b){ 
    a = 5; 
    *b = *b + 3*a; 
} 

int main(){ 
    int x, y; 
    x = 4; 
    y = 6; 
    f(x, &y); 
    // What are x and y now? 
} 
+4

C使用按值傳遞所有函數參數。在一個函數內改變一個變量不會改變傳入的原始變量的值。 – kaylum

+0

@kaylum你介意對此進行詳細說明嗎? – Joe

+0

最好如果你諮詢你的課本。任何基本的C語言書籍或教程都涵蓋了C語言的基礎知識。 – kaylum

回答

0

在你的函數中,按值傳遞而不是通過引用,所以x值將不會被改變。雖然b通過引用傳遞,所以y的值被改變。