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");
}
可变参数函数
最新推荐文章于 2023-11-15 22:31:20 发布