C语言实现不定参
时间: 2023-08-20 07:13:21 浏览: 39
在C语言中,可以使用不定参函数来处理不确定数量的参数。不定参函数的声明方式如下:
```
int func_name(int arg1, ...);
```
其中省略号(...)表示函数可能会有任意数量的参数。在函数内部,可以使用stdarg.h头文件中的宏定义来获取可变参数列表中的参数。主要的宏定义有三个:
1. va_list:定义一个可变参数列表类型的变量;
2. va_start:将可变参数列表初始化;
3. va_arg:获取可变参数列表中的参数。
下面是一个简单的例子,演示如何使用不定参函数:
```
#include <stdio.h>
#include <stdarg.h>
double average(int num, ...) {
va_list valist;
double sum = 0.0;
int i;
/* 为可变参数列表初始化 */
va_start(valist, num);
/* 访问可变参数列表中的参数 */
for (i = 0; i < num; i++) {
sum += va_arg(valist, double);
}
/* 结束可变参数列表的访问 */
va_end(valist);
/* 计算平均值并返回 */
return sum / num;
}
int main() {
double avg = average(3, 1.0, 2.0, 3.0);
printf("Average = %f\n", avg);
return 0;
}
```
在上面的例子中,average函数的第一个参数num表示可变参数列表中参数的数量,后面的省略号表示可变参数列表。在函数内部,首先使用va_start宏定义将可变参数列表初始化,然后使用va_arg宏定义依次获取可变参数列表中的参数,最后使用va_end宏定义结束可变参数列表的访问。在main函数中,调用average函数并传入3个参数,函数内部会计算这3个参数的平均值并返回。
输出结果为:
```
Average = 2.000000
```
在实际开发中,不定参函数可以方便地处理不确定数量的参数,例如printf函数就是一个常用的不定参函数。