//可变参数实现多个参数求和
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 }