您的位置:首页 > 其它

Head First C学习日志 第七章 创建可变参数的函数

2016-03-24 00:00 330 查看
##让函数能伸缩
为了让函数可以接收可变个数/类型的参数,在此引入 可变参数的函数

宏与函数
宏用来在编译前重写代码,这里引入几个宏va_start,va_list,va_arg和va_end,宏看起来和函数类似,实际上是一些指令。预处理器在编译前,会根据这些指令插入代码。以上几个宏包含在头文件
stdarg.h
中。

例程
#include <stdarg.h>
double total(int args, ...) {
double total = 0;
va_list ap;
va_start(ap, args);
int i;
for (i = 0; i < args; i++) {
enum drink d = va_arg(ap, enum drink);
total = total + price(d);
}
va_end(ap);
return total;
}

...
:省略号代表的是可以接收若干个参数,参数的数量与args一致

va_list
:将...处输入的参数放在一个list中,具体的数据结构不需要了解

va_start
:C需要知道从哪里开始,需要告诉C最后一个普通参数的名字,在这个例子中是args

va_arg
:将参数队列中的元素,以特定的格式找出来,本例中是enum drink

va_end
:告诉C你已经读取完成了所有的参数

要点

可变参数保存在va_list中

可以用va_start(),va_end(),va_art()来操作va_list

至少需要一个普通参数

读取参数时,不能超过给出的参数个数

需要知道读取参数的类型

#####代码
stretchy variables function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c