可變參數的函數
阿新 • • 發佈:2017-08-29
list iostream 一個 fun for print 指定 logs har
比如對於printf()函數,其參數就是可變的:int printf( const char* format, ...);
在函數內部我們使用va_start、va_arg、va_end這幾個宏來獲取實參,示例代碼如下:
#include <cstdio> #include <iostream> #include <cstdarg> using namespace std; void TestFun(int i, ...) { va_list ap; va_start(ap, i); int j = va_arg(ap, int);double k = va_arg(ap, double); char*p = va_arg(ap, char*); va_end(ap); printf("%d, %d, %lf, %s\n", i, j, k, p); } int main() { TestFun(1, 2, 3.0, "abc"); return 0; }
va_start的第二個參數指定從哪個參數開始獲取(不包括該參數)。
va_arg用來獲得實參,第二個參數指定實參的類型,va_arg是順序獲得一個實參,調用一次只能獲得一個參數。
va_end指明結束。
可變參數的函數