2015-10-13 63 views
-2

這應該打印3,5,-1。我不明白髮生了什麼事情。 函數foo被調用時發生了什麼?我無法理解函數foo中的最後4行。我瞭解其他一切。困惑這些指針?

enter image description here

+5

請發佈問題,代碼,你的理解以及你對什麼感到困惑。 –

+0

顯然,'y ++'這行增加了指針,而不是它指向的值。你需要使它成爲'(* y)++'。在這個練習中,他們展示了通過引用'&var'和傳遞'* var'指針的區別。在傳遞指針時,需要明確的解引用。 – alvits

+0

「最後四行」?你的意思是從'* y = z;'開始? – Beta

回答

0

功能從本質上變成

foo(&x, arr[0], 3) 
z = z+2 // z=3+2=5 
x = *y -z; // x=arr[0]-5=4-5=-1 
*y = z; //arr[0]=5 

通知a仍然3,因爲它是按值傳遞。 b指向函數執行後數組的起始位置5。和c-1,因爲通過引用。