Head First C学习日志 第七章 创建可变参数的函数
2016-03-24 00:00
330 查看
##让函数能伸缩
为了让函数可以接收可变个数/类型的参数,在此引入 可变参数的函数
宏与函数
宏用来在编译前重写代码,这里引入几个宏va_start,va_list,va_arg和va_end,宏看起来和函数类似,实际上是一些指令。预处理器在编译前,会根据这些指令插入代码。以上几个宏包含在头文件
例程
要点
可变参数保存在va_list中
可以用va_start(),va_end(),va_art()来操作va_list
至少需要一个普通参数
读取参数时,不能超过给出的参数个数
需要知道读取参数的类型
#####代码
stretchy variables function
为了让函数可以接收可变个数/类型的参数,在此引入 可变参数的函数
宏与函数
宏用来在编译前重写代码,这里引入几个宏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
相关文章推荐
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#中的委托数据类型简介
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- 学习C和C++的9点经验总结
- C++中的extern “C”用法详解
- C 语言基础教程(我的C之旅开始了)[七]
- 最大子矩阵问题实例解析
- C字符串操作函数实现方法小结
- C语言中static的作用及C语言中使用静态函数有何好处
- 字典树的基本知识及使用C语言的相关实现