國營事業◆1.計算機原理 2.網路概論題庫下載題庫

上一題

9. 副程式傳參數採傳址方式(call by address or reference),以下程式執行完最後產出值為何? 5dde2b060833a.jpg
(A) 3
(B) 6
(C) 17
(D) 18



答案:登入後觀看
難度: 適中
最佳解!
herry 國二上 (2020/04/27)
.....看完整詳...


(內容隱藏中)
查看隱藏文字
6F
a piece of ca 小一上 (2024/01/11)

program CallByAddress;
var 
    a,b,c:integer;

procedure p(var x,y,z:integer);
begin
    y:=y+1;
    z:=z+x+2*z;
end;

begin
    a:=3;
    b:=3;
    c:=a+b;
    p(c,a,a); (* Procedure call *)

    writeln(a);
end.

可執行程式如上:
(1)原題目中的procedure的p(需加入var x,y,z:integer),如果在此處不加入var,則程式不會call by address
(2)在Pascal中寫a+b傳遞給P會產生錯誤,所以加入了一個c傳給P,就會執行正確

也就是x等於c的位置,其他的a、y、z的位址相同,不相信的話可以使用writeln將y與z的值印出,仍會等於18

=================================================

X = A+B,不會受到 Y=Y+1;的影響 因為X與 A,B的位址不同,...
查看完整內容
7F
Lin Jin 小一下 (2024/05/28)
actural parameter: 呼叫函數時,傳入的參數
formal parameter: 函數內部的參數
 
call by reference
傳遞參數時是傳地址,可以理解為actural parameter取代formal parameter,但是用兩變數組成的actural parameter傳入formal parameter時,就只是複製值。
 
call by name
傳遞參數時是傳表達式,可以理解為actural parameter取代formal parameter,formal parameter <- actural parameter 

PS: Z=Z+X那行後面似乎少了end ,害我多花了一點時間思考,把end 補上才看懂。
8F
imbiao (2024/08/24)
66c91a8adfd33.jpg

9. 副程式傳參數採傳址方式(call by address or refere..-阿摩線上測驗