問題詳情

10 假設有以下程式片段,在副程式呼叫中,若以位址傳遞(Call by Address)的方法來傳遞參數,請問 print( C ) 指令執行結果 C 值為多少? sub(W, X, Y, Z);begin X=W+W; Z=Y-W;end;…A=6; B=7; C=8;call sub(A, A, A+B, C);print( C ); 
(A) 7
(B) 1
(C) 12
(D) 8

參考答案

答案:B
難度:困難0.265583
統計:A(125),B(98),C(55),D(91),E(0)

用户評論

aericv】評論

因為是call by address所以 W與X的位址都指向A的位址,所以W、X、A的數字會一起改變。call sub(A,A,A+B,C)=call sub(6,6,6+7,8)=call sub(6,6,13,8)  =call sub(W,X,Y,Z) X=W+W =6+6,因為X改變也等於W改變 所以 W=12,Z=Y-W=13-12=1

張涓】評論

有人能說明嗎?

kang】評論

因call by address所以 副程式對應各主程式變數位址X=W+W =6+6 =12Z=Y-W=13-12=1