16.C语言可变参数

//可变参数实现多个参数求和
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
", 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 }
原文地址:https://www.cnblogs.com/xiaochi/p/8150956.html