php printf 不确定个数参数 知乎,va_list 使用示例 不确定参数个数的函数的实现
时间: 2024-03-17 20:43:02 浏览: 107
知乎_最后一个不那么流氓的版本.apk
对于不确定参数个数的函数,可以使用 C 语言中的 va_list 和 va_start、va_arg、va_end 等宏来实现。va_list 是一个指向参数列表的指针,va_start 宏用于初始化 va_list 指针,va_arg 宏用于获取下一个可变参数,va_end 宏用于结束可变参数的获取。
以下是一个示例代码:
```
#include <stdarg.h>
#include <stdio.h>
void print_args(int num, ...) {
va_list args;
va_start(args, num);
for (int i = 0; i < num; i++) {
int arg = va_arg(args, int);
printf("%d ", arg);
}
va_end(args);
}
int main() {
print_args(3, 1, 2, 3);
printf("\n");
print_args(4, 4, 5, 6, 7);
printf("\n");
return 0;
}
```
在上面的代码中,print_args 函数的第一个参数 num 表示可变参数的个数,后面的 ... 表示可变参数列表。在函数内部,我们先用 va_start 宏初始化 args 指针,然后使用 va_arg 宏获取下一个可变参数,直到获取完所有参数后,再用 va_end 宏结束可变参数的获取。
执行上面的代码,输出结果如下:
```
1 2 3
4 5 6 7
```
可以看到,print_args 函数可以接受不同个数的可变参数,并且能够正确地输出这些参数。
阅读全文