- 13
- 0
- 约 16页
- 2016-09-27 发布于湖南
- 举报
详解 c语言可变参数 va_list和_vsnprintf成及printf实现
C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。先考虑这样一个问题:如果我们不使用C标准库(libc)中提供的Facilities,我们自己是否可以实现拥有变长参数的函数呢?我们不妨试试。一步一步进入正题,我们先看看固定参数列表函数,void fixed_args_func(int a, double b, char *c)
{??????? printf(a = 0x%p\n, a);??????? printf(b = 0x%p\n, b);??????? printf(c = 0x%p\n, c);}对于固定参数列表的函数,每个参数的名称、类型都是直接可见的,他们的地址也都是可以直接得到的,比如:通过a我们可以得到a的地址,并通过函数原型声明了解到a是int类型的; 通过b我们可以得到b的地址,并通过函数原型声明了解到b是double类型的; 通过c我们可以得到c的地址,并通过函数原型声明了解到c是char*类型的。但是对于变长参数的函数,我们就没有这么顺利了。还好,按照C标准的说明,支持变长参数的函数在原型声明中,必须有至少一个最左固定参数(这一点与传统C有区
您可能关注的文档
最近下载
- EPC工程总承包项目管理方案(工程方案、实施方案)总承包管理方案.pdf VIP
- 高频研究系列报告:成交量分布中的Alpha.pdf VIP
- 工业企业污染防治落实情况自查自纠表.docx
- 九号电摩2kw控制器拆解报告V1.1.pdf
- 全国大学生统计建模大赛论文.pptx VIP
- (高清版)DB42∕T 2042-2023 《排水管道紫外光固化修复技术规范》.pdf VIP
- (九科全套)新疆2026年高考三月适应性检测(二模)全科试卷(含答案).pdf
- VDA6.3讲解培训课件.pptx VIP
- 2022年湖北省高中学业水平考试真题-音乐学科.pdf VIP
- 2026年统编版小学道德与法治四年级下册各单元、期中、期末测试卷及答案(附全册知识点梳理)新版.docx
原创力文档

文档评论(0)