阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 普通考試_資訊處理:程式設計概要#102788
科目:程式設計
年份:110年
排序:0

題組內容

四、程式語言 C 可使用不同資料型別的變數存取資料與傳遞函式的參數。616fc20f36807.jpg

申論題內容

(三)請說明比較 C 程式語言中,函式參數傳遞方法,傳值呼叫(call by value) 與傳址呼叫(call by address)異同。

詳解 (共 1 筆)

詳解 提供者:hchungw
傳值呼叫(Call by Value)
定義:在函式呼叫時,將實際參數的值複製一份傳遞給函式。
作用域:函式內部使用的是參數值的副本,對參數的修改不會影響原來的變數。
優點:
安全性高,不會改變實際參數的值。
適用於傳遞基本數據類型(如 int, float)。
缺點:
對於大數據結構(如大型結構體),複製值會耗費較多記憶體和時間。
傳址呼叫(Call by Address)
定義:在函式呼叫時,將實際參數的地址傳遞給函式。
作用域:函式內部使用的是參數的地址,可以直接修改原變數的值。
優點:
更高效,避免了數據的複製。
能夠修改實際參數的值,適用於需要返回多個值或修改大數據結構的情況。
缺點:
可能會導致實際參數的值被意外修改,增加了調試的難度。
需要特別注意指針的使用,避免空指針或非法訪問。
比較
安全性:傳值呼叫更安全,不會改變實際參數;傳址呼叫修改原變數。
效率:傳值呼叫對大數據結構低效;傳址呼叫更高效。
靈活性:傳址呼叫更靈活,適用於返回多個值和修改大數據結構。

傳遞方式取決於具體需求,如數據結構大小、安全性要求等。