# call by value (傳值)

  • 在 Call-by-Value 中,函式的參數是被傳遞值的副本
  • 在函式內部,對參數的修改不會影響到原始的變數。

# call by address (傳位置)

  • 傳了實際的記憶體位置進去 function
  • 也是 call by value 的變形,但傳遞的是記憶體地址
  • 在函式內部,通過指標可以修改原始變數的值。

# call by reference (傳參考)

  • 在 Call-by-Reference 中,函式的參數接受原始變數的參考(或記憶體位置)。
  • 在函式內部,對參數的修改會直接影響到原始的變數。
範例
#include <iostream>
// Call-by-Value (值傳遞)
void incrementByValue(int value) {
    value++;
}
// Call-by-Reference using pointer (指標參考傳遞)
void incrementByPointer(int* ptr) {
    (*ptr)++;
}
// Call-by-Reference using reference (參考傳遞)
void incrementByReference(int& ref) {
    ref++;
}
int main() {
    int num = 10;
    incrementByValue(num);        // 傳遞值
    std::cout << "Call-by-Value: " << num << std::endl;  // 輸出:10
    incrementByPointer(&num);     // 傳遞指標參考
    std::cout << "Call-by-Pointer: " << num << std::endl; // 輸出:11
    incrementByReference(num);    // 傳遞參考
    std::cout << "Call-by-Reference: " << num << std::endl; // 輸出:12
    return 0;
}
傳值 傳地址 傳參考
incrementByValue incrementByPointer incrementByReference
傳入函式的東西 整數值 整數指標 (指標變數) 整數引用
原始的 num 不影響 (因為是副本) 會影響 會影響