可變參數函式
出自 cppreference.com
可變參數函數(Variadic functions)是接受可變數量參數的函數(例如 std::printf)。
要宣告一個可變參數函數,參數列表之後必須出現省略號(ellipsis),例如 int printf(const char* format...);,其前可選擇性地加上逗號。有關語法、自動參數轉換及替代方案的詳細資訊,請參閱可變參數。
為了在函數體內存取這些可變參數,提供了以下函式庫工具:
| 定義於標頭檔
<cstdarg> | |
| 啟用對可變參數函數參數的存取 (函數巨集) | |
| 存取下一個可變參數函數參數 (函數巨集) | |
| (C++11) |
複製可變參數函數參數 (函數巨集) |
| 結束對可變參數函數參數的遍歷 (函數巨集) | |
| 持有 va_start、va_arg、va_end 和 va_copy 所需資訊的型別 (typedef) | |
[編輯] 範例
執行此程式碼
#include <cstdarg> #include <iostream> void simple_printf(const char* fmt...) // C-style "const char* fmt, ..." is also valid { va_list args; va_start(args, fmt); while (*fmt != '\0') { if (*fmt == 'd') { int i = va_arg(args, int); std::cout << i << '\n'; } else if (*fmt == 'c') { // note automatic conversion to integral type int c = va_arg(args, int); std::cout << static_cast<char>(c) << '\n'; } else if (*fmt == 'f') { double d = va_arg(args, double); std::cout << d << '\n'; } ++fmt; } va_end(args); } int main() { simple_printf("dcff", 3, 'a', 1.999, 42.5); }
輸出
3 a 1.999 42.5
[編輯] 參見
| C 文件 關於 可變參數函數
|