2012-04-23 64 views
0

如果參數傳遞機制是傳遞名稱結果,那麼執行類似C的程序後的結果是什麼?關於參數傳遞(按值傳遞的結果)

procedure swap(int x, int y){ 
    int t = x; 
    x = y; 
    y = t; 
} 

main(){ 
    int v = 1; 
    int list[5] = {1,3,5,7,9}; 
    swap(v, list[v]); 
} 
+3

作業我會說? – Jack 2012-04-23 13:29:13

+0

是的,正好..XD – ZHOU 2012-04-23 13:33:37

+0

你的標題談論與身體不同的調用約定。那是故意的嗎?另外:你認爲結果會是什麼?爲什麼? – sepp2k 2012-04-23 13:43:46

回答

0

(注:我假設的問題是有關的call-by-名稱作爲問題的身體暗示 - 不叫傳值,結果爲標題所暗示的。)

使用按名稱調用時,可以通過在調用站點中插入函數的主體並將函數體中的每個參數名稱替換爲(未評估的)參數來計算出函數調用的結果。

在這種情況下,這意味着用v代替x的每次出現,並且每次出現ylist[v]。如果你這樣做並在你的腦海中執行結果代碼,你會看到結果是什麼。