KnowBug的博客通过本文主要向大家介绍了c语言,函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、可变参数为数值 #include<stdio.h> #include<stdlib.h> #include<stdarg.h> //定义了很多宏,可以处理可变参数的函数 double add(int num, ...) //...代表可变的参数 { double res = 0.0; va_list argp; //创建一个char类型的指针 va_start(argp, num); //读取num个参数,把地址存储在argp中 for (int i = 0; i < num; i++) { //printf("%f\n", va_arg(argp, double)); //依次读取参数 res += va_arg(argp, double); } va_end(argp); return res; } void main() { int x = 10; double res; res = add(x, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.10, 10.11); printf("%f\n", res); system("pause"); } 2、可变参数为字符串 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<stdarg.h> //定义了很多宏,可以处理可变参数的函数 //typedef char* va_list; #include<string.h> //可以接收多个字符串的可变参数函数 //可变参数函数至少定义一个参数(用于指定可变参数的数量) void go(int num, ...) { va_list argp; //定义指针,用于存储地址 va_start(argp, num); //指定有num个参数 for (int i = 0; i < num; i++) { char str[50]; //用于保存读取的字符串参数 strcpy(str, va_arg(argp, char *)); //按照字符串的参数读取一个参数,拷贝到str printf("%s\n", str); system(str); } va_end(argp); //结束调用 } void main() { go(5, "notepad", "calc", "tasklist", "ipconfig", "mspaint"); system("pause"); }