va_start可变参数函数

void va_start(va_list ap, last); //变参起始地址
type va_arg(va_list ap, type); //下一个参数的地址
void va_end(va_list ap);
void va_copy(va_list dest, va_list src);
int vprintf(const char *format, va_list ap);    //打印字符串
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);

举例

#include <stdio.h>
#include <stdarg.h>

void func(const char *format, ...)
{
    va_list ap;
    char *str;

    va_start(ap, format);

    vprintf(format, ap);

    while(...)
    {
        str = va_arg(ap, char*);
        printf("str = %s
", str);
    }

    va_end(ap);

    return;
}

int main()
{
    func("hello %s %s", "furong", "quange");

    return 0;
}
原文地址:https://www.cnblogs.com/zhangxuechao/p/11709723.html