1. 程式人生 > >可變參數的函數

可變參數的函數

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指明結束。

可變參數的函數