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

答案:登入後查看
統計: A(198), B(205), C(68), D(124), E(0) #798375

詳解 (共 3 筆)

#1097453
因為是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

24
0
#3152919

call by address

所以 副程式對應各主程式變數位址

X=W+W =6+6 =12
Z=Y-W=13-12=1 

2
0
#1083776
有人能說明嗎?

1
0