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
$

相關教學影片

上一頁 8.4 - 預設參數
回 C++ 速查手冊首頁
下一頁 8.6 - lambda 函數
回 C++ 教材
回程式語言教材首頁