c语言可变参数列表

在c语言中通过定义一下形式的函数来定义可变参数,函数的最后一个参数写出…,定义可变参数需要引入头文件,需要使用如下几个宏,首先定义变参列表va_list,然后使用va_start()宏初始化,第一个参数为变参列表,第二个指向变参列表前一个参数,然后使用va_arg宏来获得变参列表中的每个值,第一个参数是变参列表,第二个是想要返回的类型,如int,最后使用完毕之后用va_end宏结束。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void foo(int num, ...)
{

//1.定义一个va_list类型的变量
va_list valist;

//2.使用va_start初始化
va_start(valist, num);

//3.使用va_arg和va_list来访问每个项
for(int i = 0; i < num; ++i)
{
printf("%d\n", va_arg(valist, int));
}
//4.使用va_end结束
va_end(valist);
}
int main()
{

foo(5, 1, 2, 3, 4, 5);
return 0;
}