?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
變量函數(shù)是一些函數(shù)(例如printf
),其中需要可變數(shù)量的參數(shù)。
可變參數(shù)函數(shù)的聲明使用省略號(hào)作為最后一個(gè)參數(shù),例如 int printf(const char * format,...);. 有關(guān)語法和自動(dòng)參數(shù)轉(zhuǎn)換的更多詳細(xì)信息,請(qǐng)參閱可變參數(shù)。
從函數(shù)體訪問可變參數(shù)使用以下庫工具:
| 宏|
|:----|
| 在頭文件<stdarg.h>中定義 |
| va_start | 允許訪問可變參數(shù)函數(shù)參數(shù)(函數(shù)宏)|
| va_arg | 訪問下一個(gè)可變參數(shù)函數(shù)參數(shù)(函數(shù)宏)|
| va_copy(C99)| 制作可變參數(shù)函數(shù)參數(shù)(函數(shù)宏)|的副本
| va_end | 結(jié)束可變參數(shù)函數(shù)參數(shù)(函數(shù)宏)|的遍歷
| 類型|
| va_list | 保存va_start,va_arg,va_end和va_copy(typedef)所需的信息|
打印不同類型的值。
#include <stdio.h>#include <stdarg.h> void simple_printf(const char* fmt, ...){ va_list args; va_start(args, fmt); while (*fmt != '\0') { if (*fmt == 'd') { int i = va_arg(args, int); printf("%d\n", i); } else if (*fmt == 'c') { // note automatic conversion to integral type int c = va_arg(args, int); printf("%c\n", c); } else if (*fmt == 'f') { double d = va_arg(args, double); printf("%f\n", d); } ++fmt; } va_end(args);} int main(void){ simple_printf("dcff", 3, 'a', 1.999, 42.5); }
輸出:
3a1.99900042.50000
C11標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.16變量參數(shù)<stdarg.h>(p:269-272)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.15變量參數(shù)<stdarg.h>(p:249-252)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
4.8變量<stdarg.h>
| 用于Variadic函數(shù)的C ++文檔 |
|:----|