美文网首页
C标准库——

C标准库——

作者: Jack_6a46 | 来源:发表于2018-10-09 15:10 被阅读0次

stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知时获取函数中的参数。
可变参数的函数在参数列表的末尾是使用省略号(......)定义的。

库变量

va_list 这是一个适用于va_start(), va_arg() 和 va_end()这三个宏存储信息的类型。

库宏

void va_start(va_list ap, last_arg)初始化ap变量,它与va_arg和va_end宏是一起使用的。last_arg是最后一个传递给函数的已知的固定参数,即省略号之前的参数。
这个宏必须在使用va_arg 和 va_end 之前被调用。

int Sum(int num_args, ...)
{
int i, val = 0;
va_list ap;
va_start(ap, num_args);
for(i = 0; i < num_args; i++)
{
    val += va_arg(ap, int);
}
va_end(ap);
return val;
}
void main()
{
printf("10, 20, 30的和为 %d\n", Sum(3, 10, 20, 30));
printf("4, 5, 6, 7的和为 %d\n", Sum(4, 4, 5, 6, 7));
getchar();
}
image.png

type va_arg(va_list ap, type)检索函数参数列表中类型为type的下一参数。它无法判断检索到的参数是否是传给函数的最后一个参数。

void va_end(va_list ap) 允许使用va_list宏的带有可变参数的函数返回。如果从函数返回之前没有调用va_end, 则结果为未定义。

相关文章

网友评论

      本文标题:C标准库——

      本文链接:https://www.haomeiwen.com/subject/hjneaftx.html