Head First C学习日志 第七章 创建可变参数的函数
2019独角兽企业重金招聘Python工程师标准>>>
##让函数能伸缩 为了让函数可以接收可变个数/类型的参数,在此引入 可变参数的函数
宏与函数
宏用来在编译前重写代码,这里引入几个宏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
转载于:https://my.oschina.net/alextuan/blog/646351
Head First C学习日志 第七章 创建可变参数的函数相关推荐
- 《SysML精粹》学习记录--第七章
<SysML精粹>学习记录 第七章:序列图 序列图简介 序列图元素 消息 约束 组合片段 交互使用 小结 第七章:序列图 序列图简介 序列图是另一种可以用来说明系统动态行为信息的Sys ...
- Effective C++ 学习笔记 第七章:模板与泛型编程
第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...
- 《Go语言圣经》学习笔记 第七章 接口
<Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...
- Ajax学习日志(七)—— 解决低版本IE浏览器的缓存问题
Ajax入门(七) 一.解决低版本IE浏览器的缓存问题 1.1) 低版本IE浏览器的缓存问题及解决方案 1.2)需了解的知识 1.3)在app.js同目录下新建一个txt文件 1.4)在app.js创 ...
- oracle创建索引index,【学习笔记】Oracle索引 创建含sysdate的函数index案例
天萃荷净 分享一篇运维DBA需求,创建含sysdate的函数index案例 1.模拟Oracle数据库环境 创建表插入数据库 [oracle@node1 ~]$ sqlplus chf/oraclep ...
- Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞
第七章 不太知名的 Android 漏洞 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们将了解一些不太知名的 Android 攻击向量,这在 Andr ...
- 吴恩达机器学习学习笔记第七章:逻辑回归
分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...
- 广义相对论-学习记录16-第七章-史瓦西解与粒子运动1
第七章:史瓦西解与粒子运动 史瓦西解是真空解:Rμν=0R_{\mu\nu}=0Rμν=0,并且具有下述两个条件: (1)引力源是球对称的,即gμνg_{\mu\nu}gμν中只能含有下述 ...
- 【机器学习-周志华】学习笔记-第七章
记录第一遍没看懂的 记录觉得有用的 其他章节: 第一章 第三章 第五章 第六章 第七章 第八章 ...
最新文章
- OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
- 1089: [SCOI2003]严格n元树
- 【MFC三天一个游戏】之 局域网黑白棋
- amaze 绝对位置 html,Amaze UI 兼容性列表
- 2020 年最全 Python 面试题汇总 (一)
- 线程同步(互斥锁、条件、读写锁、信号量)
- stl中map函数_map :: max_size()函数,以及C ++ STL中的Example
- 云计算机房防雷规范,弱电机房设计内容规范大全
- StuQ IT技能图谱全集
- linux执行telnet命令,Linux怎么使用telnet命令
- 这次,华为选择了湖南大学、湘潭大学
- 旅游指南之一----各地旅行社
- Why ASMLIB and why not?
- word打开文档很久很慢_打开office非常慢怎么回事_电脑打开word文件很慢怎么办
- 【渝粤教育】电大中专跨境电子商务理论与实务 (32)作业 题库
- 简述改变计算机桌面背景的方法,怎么设置和更改桌面背景
- Volatile底层实现原理
- android 文件编辑,文件编辑软件(在线文档编辑)
- 浏览器是怎么得到一个网页的
- 怎么接入OpenAI API?
热门文章
- linux mysql cron_定时MySQL动作-Linux下用Cron现定时执行脚本
- java编程东西好多记不住_课程总结
- linux7.0怎么设置中文,CentOS 7 yum安装zabbix 设置中文界面
- 搭建kafaka_Kafka 环境部署搭建
- mysql导出数据字典6_MySQL利用Navicat导出数据字典
- 云服务器登陆修改文件,香港云服务器使用注意事项(windows版)
- 文件输出 java_用Java读写文件(输入/输出)-教程
- java uncked_使用FindBugs对SpringSide1.0m3进行分析的结果
- 线程死锁 解决共享资源问题
- java注解管理_JavaSpring【四、Bean管理注解实现】