預設參數: 在函數定義中指定參數預設值,使用常數預定義;可變參數: 使用省略號表示,編譯為指向數組的指針,打包傳入參數,遍歷數組存取參數。
探究C 函數預設參數與可變參數的底層實作
##預設參數
預設參數是一種可以在函數定義中指定參數預設值的機制。它允許函數在不傳遞實參時使用預設值。 在底層,預設參數實際上是由編譯器實現的,也就是預先定義為常數的參數。當編譯器呼叫具有預設參數的函數時,它將檢查是否傳遞了傳入變量,如果沒有,它將使用預先定義的預設值。 例如:void print_number(int num, int default_num = 10) { cout << (num ? num : default_num) << endl; }當呼叫函數時,我們可以傳遞或不傳遞第二個參數:
print_number(5); // 输出 5 print_number(0, 20); // 输出 20
可變參數
可變參數又稱不定長參數,它允許函數接受數量不定的參數。在 C 中,可變參數使用省略號 (...) 表示。
int sum_numbers(int count, ...) { int sum = 0; va_list args; va_start(args, count); // 获取可变参数列表 for (int i = 0; i < count; ++i) { sum += va_arg(args, int); // 访问第 i 个参数 } va_end(args); // 清理可变参数列表 return sum; }當呼叫函數時,我們可以傳遞任意數量的參數:
cout << sum_numbers(3, 1, 2, 3) << endl; // 输出 6 cout << sum_numbers(5, 10, 20, 30, 40, 50) << endl; // 输出 150
實戰案例##在現實世界中,預設參數和可變參數有廣泛的應用。例如:
用於指定備用值,避免未傳遞參數時發生錯誤。
以上是探究 C++ 函數預設參數和可變參數的底層實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!