头文件 stdarg;类型va_list;宏va_start;宏va_arg;宏va_end
1 #include <stdio.h>
2 #include <stdarg.h>
3
4 // 只能是3个点 ...
5 int printArgs(int begin, ...)
6 {
7 va_list ap;
8 char *p;
9 int count;
10 // va_start 初始化va_list类型变量,使其指向可变参数列表的头
11 va_start(ap, begin);
12 // va_arg 返回一个可变参数,并使ap指向下一个可变参数
13 p = va_arg(ap, char *);
14 count = 0;
15 while(p != NULL)
16 {
17 count++;
18 printf("arg %d: %s\n", count, p);
19 p = va_arg(ap, char *);
20 }
21 // va_end 清理工作
22 va_end(ap);
23 return count;
24 }
25
26 int main(void)
27 {
28 int count;
29
30 count = printArgs(-1, "hello", "world", NULL);
31 printf("the number of arguments: %d\n", count);
32
33 count = printArgs(0 , "jiangsu", "nanjing", "qixia", NULL);
34 printf("the number of arguments: %d\n", count);
35 return 0;
36 }