C语言中的可变参数
2011-09-20 00:24
183 查看
我在学C语言的时候对函数printf()特别好奇,因为它后面的参数是可以变的,很长一段时间我也不明白这是怎么实现的,现在附带说明,写得有点不伦不类:
关键使用到了三个宏,va_start(),va_arg(),va_end(),以及一个va_list类型,这三个宏定义在stdarg.h中。这是C标准库的一部分。
va_start(va_list para, first_argu) 这个宏类似于创建一个“流”对象,并要用可变参数前面的一个参数初始化。具体实现我也不清楚。
va_arg(va_list para, type) 这个宏类似于从“流”中提取可变参数,type是可变参数类型。
va_end(para) 关闭“流”
# include<iostream> # include<stdarg.h> using namespace std; double Add(int first, ...) { va_list para; va_start(para, first); double sum = first; sum += va_arg(para, int); sum += va_arg(para, double); sum += va_arg(para, double); va_end(para); return sum; } int main() { printf("%.1lf\n", Add(1, 3, 3.1, 3.2)); system("PAUSE"); return 0; }
关键使用到了三个宏,va_start(),va_arg(),va_end(),以及一个va_list类型,这三个宏定义在stdarg.h中。这是C标准库的一部分。
va_start(va_list para, first_argu) 这个宏类似于创建一个“流”对象,并要用可变参数前面的一个参数初始化。具体实现我也不清楚。
va_arg(va_list para, type) 这个宏类似于从“流”中提取可变参数,type是可变参数类型。
va_end(para) 关闭“流”
相关文章推荐
- C语言中的可变参数
- C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
- C语言中的可变参数——由printf()引发的思考
- C语言中可变参数的用法
- 2017年1月19日学习总结----c语言可变参数的用法
- C语言中可变函数参数变量的实现
- C语言中可变参数的用法
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) . 分类: HI3531 arm-linux-Ubuntu 2013-12-16 14:19 438人阅读 评论(0) 收藏
- C语言中 variable argument 可变参数用法
- c语言中的可变参数
- C语言中可变参数函数的设计
- C语言的可变参数表函数的设计
- C语言中可变参数的用法
- C语言面向对象之继承、多态、可变参数、函数指针
- C语言中可变参数宏的深入讨论
- C语言可变参数(廿十)
- C语言可变参数的实现
- C语言中可变参数的用法,转
- C语言中可变参数函数的设计
- C语言可变参数实现函数重载