//可变参数实现多个参数求和
1 #define _CRT_SECURE_NO_WARNINGS
2
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <stdarg.h>//标准参数
6
7 int add(int num, ...)//...代表可变参数
8 {
9 int res = 0;//结果
10 va_list argp;//存储参数开始的地址
11 va_start(argp, num);//从首地址开始,读取num后面的数据
12 for (int i = 0; i < num; i++)
13 {
14 res += va_arg(argp, int);//读取一个数据按照int解析
15 }
16 va_end(argp);//结束读取
17
18 return res;
19 }
20
21 void main()
22 {
23 printf("%d",add(3,1,2,3));
24
25
26
27 getchar();
28 }
1 //可变参数实现多个字符串system
2 void run(int num, ...)
3 {
4 va_list argp;//存储参数开始的地址
5 va_start(argp, num);//从首地址开始,读取num后面的数据
6 for (int i = 0; i < num; i++)
7 {
8 char str[50];
9 sprintf(str, "%s", va_arg(argp, char *));//读取一个数据按照char *解析
10 system(str);
11 }
12 va_end(argp);//结束读取
13 }
14
15 void main()
16 {
17 run(3, "notepad", "calc", "tasklist & pause");
18 }
1 //可变参数实现输出不定个数的数字
2 void showint(int start, ...)
3 {
4 va_list argp;//存储参数开始的地址
5 va_start(argp, start);//从首地址开始,读取start后面的数据
6 int argvalue = start;//第一步初始化
7 do
8 {
9 argvalue = va_arg(argp, int);
10 printf("%d\n", argvalue);
11 } while (argvalue != -1);
12
13 va_end(argp);//结束读取
14 }
15
16 void main()
17 {
18 showint(1, 3, 4, 56, 3,-1);
19 system("pause");
20 }