C语言 不定长入参 传递
时间: 2023-07-26 17:04:53 浏览: 66
C语言中可以使用可变参数列表来实现不定长的入参传递。可变参数列表是通过stdarg.h头文件中提供的宏来实现的。具体步骤如下:
1. 在函数定义中声明可变参数列表,如下例所示:
```c
int add(int num, ...);
```
2. 在函数实现中先定义一个va_list类型的变量,用来存储可变参数列表。然后使用宏va_start()初始化这个变量,如下例所示:
```c
#include <stdarg.h>
int add(int num, ...)
{
int sum = 0;
va_list args;
va_start(args, num);
// ...
}
```
3. 在函数实现中使用va_arg()宏依次获取可变参数列表中的每一个参数,如下例所示:
```c
#include <stdarg.h>
int add(int num, ...)
{
int sum = 0;
va_list args;
va_start(args, num);
for (int i = 0; i < num; i++) {
sum += va_arg(args, int);
}
va_end(args);
return sum;
}
```
4. 在函数实现结束时使用va_end()宏来释放可变参数列表的资源。
需要注意的是,在使用va_arg()获取可变参数列表中的参数时,需要先指定参数的类型,否则会出现类型错误。同时,在使用可变参数列表时,由于编译器无法对入参进行类型检查,因此需要开发者自己来保证传入的参数类型和数量的正确性。