可变参数

include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
int add(int length, ...) {//有很多宏,可以处理可变参数的函数


va_list l_p = 0;//定义指针,用于存储地址,不能加星号*


va_start(l_p, length);//从这里开始读取参数,读取length个参数,并把地址放在l_p


int l_sum = 0;
for (size_t i = 0; i < length; i++)
{
l_sum = l_sum + va_arg(l_p, int);//每搜索一个参数并且加int

}
return l_sum;

}
void main() {
add(5, 1, 2, 3, 4, 5);
printf("%d\n", add(5, 1, 2, 3, 4, 5));
system("pause");
}

stdarg.h数据类型

类型名称
描述
相容
va_list
用来保存宏va_arg与宏va_end所需信息
C89

stdarg.h宏

巨集名称
描述
相容
va_start
使va_list指向起始的参数
C89
va_arg
检索参数
C89
va_end
释放va_list
C89
va_copy
拷贝va_list的内容
C99

 

stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准) arguments(参数)简化而来,主要目的为让函数能够接收可变参数。C++的cstdarg头文件中也提供这样的功能

posted @ 2017-10-02 11:37  随意就好欧巴  阅读(136)  评论(0)    收藏  举报