c++的不定长入参函数
时间: 2023-12-16 22:03:29 浏览: 35
在 C 中,可以使用可变参数列表来定义不定长入参函数。可变参数列表使用 `<stdarg.h>` 头文件中的宏来实现,常用的宏有 `va_list`、`va_start`、`va_arg` 和 `va_end`。
以下是一个简单的例子,展示了如何使用可变参数列表来实现不定长入参函数:
```c
#include <stdio.h>
#include <stdarg.h>
void print_numbers(int count, ...)
{
va_list args;
va_start(args, count);
for (int i = 0; i < count; i++) {
int num = va_arg(args, int);
printf("%d ", num);
}
printf("\n");
va_end(args);
}
int main(void)
{
print_numbers(3, 1, 2, 3); // 输出:1 2 3
print_numbers(5, 10, 20, 30, 40, 50); // 输出:10 20 30 40 50
return 0;
}
```
在上面的例子中,`print_numbers` 函数接受一个整数 `count` 和一系列整数参数。使用 `va_list` 宏定义一个变量 `args`,并使用 `va_start` 宏初始化它。然后使用 `va_arg` 宏从变量 `args` 中获取每个整数参数,并使用 `printf` 函数输出它们。最后使用 `va_end` 宏释放变量 `args`。
需要注意的是,不定长入参函数的参数个数是不确定的,因此在函数内部需要处理参数的个数和类型。此外,在使用可变参数列表时需要小心,因为它们会增加代码的复杂性。