複選題
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
統計: A(24), B(74), C(54), D(30), E(9) #1263473
詳解 (共 3 筆)
#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