变参函数一些用法

来源:互联网 发布:8.1号后淘宝买药流程 编辑:程序博客网 时间:2024/06/08 19:33

C语言中的 多参数变量用法
va_list , va_start ,va_arg 等用法简介

简单来讲 va_list 就一链表

linux C 语言中头文件 #include

void func(const char *fmt,...){    char *ptemp = NULL;    va_list arg_ptr;    va_start(arg_ptr,fmt);    printf("fmt: %s\n",fmt);    while((ptemp = va_arg(arg_ptr,char *)) != NULL)    {        if(!strncmp("-a",ptemp,2))        {            printf("-a:  %s\n", va_arg(arg_ptr, char *));        }else if(!strncmp("-b",ptemp,2))        {            printf("-b:  %d\n", va_arg(arg_ptr, int));        }else if(!strncmp("-c",ptemp,2))        {            printf("-c:       %d\n", va_arg(arg_ptr, int));        }else{            break;        }    }    va_end(arg_ptr);}调用:   func("hello.exe","-a","mark", "-b", 4, "-c", 100);

不用看: 打印出来的就分别是 hello.exe
-a mark
-b 4
-c 100

va_list arg_ptr; 定义链表头
va_start(arg_ptr,fmt); 指向表头
ptemp = va_arg(arg_ptr,char ) //第二个参数是指 要返回的类型 ,这里是 char
可以根据你传进来的参数进行设置

va_end(arg_ptr); 指向空

虽说简单明了,时间久了,没怎么整理这些,可能有些地方没怎么注意看,错误的地方,大家别介意,给新手看了,后面如果有时间会多更新一些内容,供一些新手参考。

0 0