您的位置:首页 > 编程语言 > C语言/C++

C语言学习笔记——可变参数列表

2014-10-13 12:15 274 查看
stdarg.h提供了可用于可变参数列表的宏,这是标准库的一部分,定义为va_list,主要包括以下三个部分:va_start, va_arg, va_end.

va_list是要读取的参数列表,va_start(var_arg, n_values);和va_end(var_arg);之间是主要要实现的流程。具体例子如下:

Writer: P.C.
Date: 2014.10.13 11:09
Description: 利用stdarg.h来实现参数列表的可变性
*/
#include "stdafx.h"
#include "stdio.h"
#include "stdarg.h"

void printargs(int arg1, ...)
{
va_list ap;//定义参数列表
int i;
int sum=0;
int count=0;
va_start(ap, arg1); //启动参数列表的读取
for (i = arg1; i != -1; i = va_arg(ap, int))//参数列表读取的过程,-1是人为设定的终止,可以替换成其他的,如>10,则读取到第一个大于10的数便终止
{ sum=sum+i;
count++;}
va_end(ap);//结束参数列表的读取
printf("%d\n",sum/count);
}

int main(void)
{
printargs(1,2,3,4,5,-1);//一定要设置好终止位,否则会出错

return 0;
}
以前都是通过设定多种构造函数来实现不同参数个数的输入,利用这个头文件相对更便利一些,但也会参加对参数控制的麻烦和出错的可能性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: