名称描述相容 // 作用描述
va_start
使va_list
指向起始的参数
va_arg
检索参数C89
va_end
释放va_list
va_copy
拷贝va_list
的内容
实例解析:
#include <stdio.h> #include <stdarg.h> void printargs(int arg1, ...) /* 输出所有int类型的参数,直到-1结束 */ //参数列表中, 后面的元素类型不一定,va_arg()函数的返回类型决定的 {
va_list ap;//va_list 是数据类型 int i;
va_start(ap, arg1); //两个参数:第一个参数为va_list 数据类型的变量,第二个参数为函数第一个参数的名称 // 接着每一调用va_arg就会返回下一个参数, for (i = arg1; i != -1; i = va_arg(ap, int)) //va_arg的第一个参数为va_list,第二个参数为返回的数据类型 printf("%d ", i); double f; f = va_arg(ap,double); printf("\t浮点型的数据%lf",f); va_end(ap); //最后va_end必须在函数返回前被va_list呼叫( putchar(‘\n‘); } //va_copy,它能够复制va_list而va_copy(va2, va1)意思为拷贝va1到va2。 int main(void) { printargs(5, 20, 14, 84, 97, 15, 24, 48, -1,0.123); printargs(84, 51, -1,0.234); printargs(-1,34.22); printargs(1, -1,23.23); return 0; }
自己赋值粘贴运行;