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
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
統計: 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
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