複選題
38 下列有關參數傳遞的兩個敘述,何者正確?何者錯誤? 敘述 A:C 只有傳值呼叫(call by value)一種參數傳遞方法 敘述 B:C++有傳值呼叫與傳參考呼叫(call by reference)兩種參數傳遞方法
(A)敘述 A 是正確的,但是敘述 B 是錯誤的
(B)敘述 A 是錯誤的,但是敘述 B 是正確的
(C)敘述 A 和敘述 B 都是正確的
(D)敘述 A 和敘述 B 都是錯誤的

答案:登入後查看
統計: A(24), B(74), C(54), D(30), E(9) #1263473

詳解 (共 3 筆)

#3257362
根據我學的C++有:傳值(Pass by...
(共 221 字,隱藏中)
前往觀看
11
0
#3257358
如果B正確答案就不會有C根據我學的C++...
(共 233 字,隱藏中)
前往觀看
1
0
#4128702

給大家一個觀念,真正的正確答案是C

call by address據說是台灣人自己發明的稱呼

用來對照C++的傳參考呼叫(call by reference)


實際上C語言只有傳值呼叫(call by value)而已

就連傳遞指標給副程式也是先宣告出指標"變數"才把引數傳給副程式

(既然是指標變數,傳遞的就是指標變數的值,只是這個值指向一個記憶體位址而已)


有人會問那用 &x 傳遞 x 的記憶體位址到副程式呢?

這在副程式中也會產生一個指標變數用來指向 x 的記憶體位址

例如函式宣告 void function(int *p);

那在呼叫副程式的時候就會有一個指向整數型別的指標 p 指向 x 的記憶體位址

還是回到傳遞指標變數(pointer)給副程式的方法

而這個指標變數(pointer)的值就是指向 x 的記憶體位址

所以從頭到尾都只有call by value的用法

1
0