C++ 速查手冊
8.5 - 可變參數
函數的參數數量也可以不固定,這是在參數列裡利用 ... 構成可變參數 (variadic arguments) ,舉例如下
#include <iostream>
#include <cstdarg>
int sum(int n_args, ...) {
va_list ap;
va_start(ap, n_args);
int sum = va_arg(ap, int);
for (int i = 2; i <= n_args; i++) {
sum += va_arg(ap, int);
}
va_end(ap);
return sum;
}
int main() {
std::cout << sum(3, 11, 22, 33) << std::endl;
std::cout << sum(3, 19, 20, 21) << std::endl;
std::cout << sum(3, 3, 65, 101) << std::endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0805.cpp
功能:示範 C++ 的函數
作者:張凱慶*/
此例的 sum() 用來計算參數的總和,除了第一個參數 n_args 為計算總和的數量之外,其他的參數都會被累加起來,結果回傳為整數
int sum(int n_args, ...) {
va_list ap;
va_start(ap, n_args);
int sum = va_arg(ap, int);
for (int i = 2; i <= n_args; i++) {
sum += va_arg(ap, int);
}
va_end(ap);
return sum;
}
這裡借助標準程式庫中 cstdarg 的幾個函數取得可變參數值。
編譯執行,結果如下
$ g++ u0805.cpp |
$ ./a.out |
66 |
60 |
169 |
$ |
相關教學影片