一、简介:
c语言在写函数时,如果不确定要输入多少参数,标准库提供了一种方式输入任意长度参数。
二、使用方法
1、添加头文件:#include <stdarg.h>
2、定义:参数上面用“…”代表任意个参数,省略号之前的那个参数是 int,代表了要传递的可变参数的总数
3、访问:在函数定义中创建一个 va_list 类型变量
使用 int 参数和 va_start 宏来初始化 va_list 变量为一个参数列表
使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项
使用宏 va_end 来清理赋予 va_list 变量的内存
以下面求和函数为例:
要求和输入的数量不确定,输出求和的结果
三、示例
1、编写接口和添加头文件
#include <stdio.h>
#include <stdarg.h>
int sum(int num, ... )
{
...
}
2、添加访问变量参数,测试
#include <stdio.h>
#include <stdarg.h>
int mysum(int num, ... )
{
va_list valist;
int sum = 0;
int i;
//初始化参数列表
va_start(valist, num);
//读取参数
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
//清理参数内存
va_end(valist);
return sum;
}
int main()
{
printf("sum = %d\n", mysum(4, 2,3,4,5));
printf("sum = %d\n", mysum(3, 5));
return 0;
}