二、請說明函式之間的呼叫方式,其實際參數(actual parameter)與形式參數 (formal parameter)的傳送有那幾種?並撰寫對應的程式片段加以說明。(25 分)
詳解 (共 2 筆)
詳解
形式參數: 定義函式時的參數
實際參數: 實際呼叫函式時傳入的參數
傳送種類:
1. pass by value: 複製參數的值進去,在函式裡的運作結果不會影響到原本的變數
2. pass by address: 傳送參數的記憶體位址進去
3. pass by reference: 在c++中有reference的用法,對變數取別名,兩個看起來不同名稱的變數但實際上是同一塊記憶體
4. pass by result: 函式中隊形式參數的變更在函式結束後會傳回實際參數
5. pass by value-result: 第1項與第4項的結合,會複製實際參數的值進去,在函式運作結束後形式參數的值會回傳給實際參數
詳解
函式之間的呼叫方式及參數的傳送方式是程式設計中的重要概念。這些概念可以幫助理解函式如何接收和處理資料。在這裡,我們將探討實際參數(Actual Parameter)與形式參數(Formal Parameter)的傳送方式,並通過程式片段來說明。
函式呼叫方式
-
值傳遞(Pass by Value):
- 定義:將實際參數的值複製一份傳遞給函式。函式內部對參數的修改不會影響到外部的實際參數。
- 示例:C# 和 Java 都默認使用值傳遞。
-
引用傳遞(Pass by Reference):
- 定義:將實際參數的引用(記憶體地址)傳遞給函式。函式內部對參數的修改會直接影響到外部的實際參數。
- 示例:C# 中可以使用 ref 或 out 關鍵字實現引用傳遞。
-
引用值傳遞(Pass by Value of Reference):
- 定義:傳遞的是對象的引用,但本質上是值傳遞。對象本身可以被修改,但引用的變更不會影響到外部的實際參數。
- 示例:在 C# 和 Java 中,物件型別(如陣列和自定義對象)是通過這種方式傳遞。