做的一个C demo如下:
#include “stdio.h”
#include “stdarg.h”//必备
//typedef char* va_list;//已在头文件中定义
int demo(char *title, char *first,…)//用省略号表示函数剩余未列出的隐含形参
{
char *pStr = NULL;
//step 1:一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。
va_list argptr;
//step 2:初始化,让argptr指向可变参数表里面的第一个隐含参数;第二个参数为最后的可视参数
va_start(argptr, first);
//step 3:va_arg,它的第一个参数是argptr,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把argptr的位置指向变参表的下一个变量位置
pStr = va_arg(argptr,char*);
printf("%s", pStr);
pStr = va_arg(argptr,char*);
printf("%s", pStr);
//step 4:调用va_end,他是输入的参数argptr置为NULL
va_end(argptr);
}
void main(void)
{
demo(“DEMO”, "Crazy ", "Hello ", “World!\n”);
}
参考:
https://www.runoob.com/cprogramming/c-macro-va_start.html