C语言不定参数实例详解

来源:互联网 发布:主角可以优化功法的 编辑:程序博客网 时间:2024/05/17 08:12

不定参数函数定义:

第一种:设定有多少个参数,来标志不定参数的结束
第二种:设定最后一个值为空,来标志不定参数的结束

#include "../h.h"#define mylog(fmt, ...) myprint(__FILE__, __LINE__,             fmt,##__VA_ARGS__)void myprint(const char* filename, int line, const char* fmt, ...){    printf("%s, %d, ", filename, line);    va_list ap;    va_start(ap, fmt);    vprintf(fmt, ap);    va_end(ap);} // 设定最后一个值为空,来标志不定参数的结束int print(const char* a, ...){    const char* arg = a;    va_list args;    va_start(args, a);    while(arg)    {        printf("%s\n", arg);        arg = va_arg(args, const char*);    }    va_end(args);} // 设定有多少个参数,来标志不定参数的结束int add(int count, ...) {    int i;    int sum = 0;    va_list args;    // 获得不定参数的首地址    va_start(args, count);    for(i=0; i<count; ++i)    {        // 通过va_arg获得参数        int arg = va_arg(args, int);        sum += arg;    }    // 参数获取完毕    va_end(args);    return sum;}int main(){    myprint(__FILE__, __LINE__, "haha%d\n", 100);    mylog("print in mylog %d\n", 100);    print("hello", "world", "haha", "you are dead", NULL);    int ret = add(3, 5, 6, 7);    printf("%d\n", ret);    return 0;}
0 0