2019独角兽企业重金招聘Python工程师标准>>>

##让函数能伸缩 为了让函数可以接收可变个数/类型的参数,在此引入 可变参数的函数

宏与函数

宏用来在编译前重写代码,这里引入几个宏va_start,va_list,va_argva_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学习日志 第七章 创建可变参数的函数相关推荐

  1. 《SysML精粹》学习记录--第七章

    <SysML精粹>学习记录 第七章:序列图 序列图简介 序列图元素 消息 约束 组合片段 交互使用 小结 第七章:序列图 序列图简介   序列图是另一种可以用来说明系统动态行为信息的Sys ...

  2. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  3. 《Go语言圣经》学习笔记 第七章 接口

    <Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...

  4. Ajax学习日志(七)—— 解决低版本IE浏览器的缓存问题

    Ajax入门(七) 一.解决低版本IE浏览器的缓存问题 1.1) 低版本IE浏览器的缓存问题及解决方案 1.2)需了解的知识 1.3)在app.js同目录下新建一个txt文件 1.4)在app.js创 ...

  5. oracle创建索引index,【学习笔记】Oracle索引 创建含sysdate的函数index案例

    天萃荷净 分享一篇运维DBA需求,创建含sysdate的函数index案例 1.模拟Oracle数据库环境 创建表插入数据库 [oracle@node1 ~]$ sqlplus chf/oraclep ...

  6. Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞

    第七章 不太知名的 Android 漏洞 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们将了解一些不太知名的 Android 攻击向量,这在 Andr ...

  7. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  8. 广义相对论-学习记录16-第七章-史瓦西解与粒子运动1

    第七章:史瓦西解与粒子运动   史瓦西解是真空解:Rμν=0R_{\mu\nu}=0Rμν​=0,并且具有下述两个条件:   (1)引力源是球对称的,即gμνg_{\mu\nu}gμν​中只能含有下述 ...

  9. 【机器学习-周志华】学习笔记-第七章

    记录第一遍没看懂的 记录觉得有用的 其他章节:         第一章         第三章         第五章         第六章         第七章         第八章      ...

最新文章

  1. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
  2. 1089: [SCOI2003]严格n元树
  3. 【MFC三天一个游戏】之 局域网黑白棋
  4. amaze 绝对位置 html,Amaze UI 兼容性列表
  5. 2020 年最全 Python 面试题汇总 (一)
  6. 线程同步(互斥锁、条件、读写锁、信号量)
  7. stl中map函数_map :: max_size()函数,以及C ++ STL中的Example
  8. 云计算机房防雷规范,弱电机房设计内容规范大全
  9. StuQ IT技能图谱全集
  10. linux执行telnet命令,Linux怎么使用telnet命令
  11. 这次,华为选择了湖南大学、湘潭大学
  12. 旅游指南之一----各地旅行社
  13. Why ASMLIB and why not?
  14. word打开文档很久很慢_打开office非常慢怎么回事_电脑打开word文件很慢怎么办
  15. 【渝粤教育】电大中专跨境电子商务理论与实务 (32)作业 题库
  16. 简述改变计算机桌面背景的方法,怎么设置和更改桌面背景
  17. Volatile底层实现原理
  18. android 文件编辑,文件编辑软件(在线文档编辑)
  19. 浏览器是怎么得到一个网页的
  20. 怎么接入OpenAI API?

热门文章

  1. linux mysql cron_定时MySQL动作-Linux下用Cron现定时执行脚本
  2. java编程东西好多记不住_课程总结
  3. linux7.0怎么设置中文,CentOS 7 yum安装zabbix 设置中文界面
  4. 搭建kafaka_Kafka 环境部署搭建
  5. mysql导出数据字典6_MySQL利用Navicat导出数据字典
  6. 云服务器登陆修改文件,香港云服务器使用注意事项(windows版)
  7. 文件输出 java_用Java读写文件(输入/输出)-教程
  8. java uncked_使用FindBugs对SpringSide1.0m3进行分析的结果
  9. 线程死锁 解决共享资源问题
  10. java注解管理_JavaSpring【四、Bean管理注解实现】