可变参数列表
来源:互联网 发布:双11京东和淘宝 编辑:程序博客网 时间:2024/05/16 06:43
C语言可变参数列表通过宏来实现,这些宏定义在stdarg.h头文件中,是标准库中的一部分。stdarg.h头文件声明了一个类型va_list和三个宏——va_start,va_end和va_arg。通过声明一个va_list类型的变量与这几个宏配合使用,访问参数的值。
可变参数列表位于一个或多个普通参数的后面,在函数原型中用一个省略号表示。
va_list类型的变量通过va_start来初始化,va_start有两个参数,第1个参数是va_list类型的变量,第2个参数是省略号前最后一个有名字的参数。初始化过程把va_list类型的变量设置为指向可变参数部分的第1个参数。va_arg宏接受两个参数:va_list类型的变量和参数列表中下一个参数的类型。va_arg返回当前参数的值,并使va_list类型的变量指向下一个可变参数。当访问完最后一个可变参数后,需要调用va_end。
可变参数只能从头到尾按顺序访问。由于可变参数列表部分没有原型,所以,作为可变参数传递函数的值都将执行缺省的参数类型提升。参数列表中至少要有一个命名参数,否则无法使用va_start。
简单示例:
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int sum(int n, ...) {va_list arg;int count;int s = 0;va_start(arg, n);for (count = 0; count < n; ++count) {s += va_arg(arg, int);}va_end(arg);return s;}int main(void) {int a = 1;int b = 2;int c = 4;int d = 8;printf("sum = %d\n", sum(4, a, b, c, d));return EXIT_SUCCESS;}结果输出:
sum = 15
- Java可变参数列表
- 可变参数列表
- 关于可变参数列表
- 可变参数列表
- c++ 可变参数列表
- 可变参数列表
- cstdarg可变参数列表
- 可变参数列表
- java可变参数列表
- 可变参数列表
- Java 可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- /可变参数列表
- 可变参数列表
- vps和空间的区别和优势?
- Solr SpellCheckComponent(拼写建议组件)实践与分析
- 第二章 Oracle恢复内部原理(基础数据结构)
- 【修改matlab 默认启动文件夹在我自定义的工作目录】
- Convert Dynamic to Static Construction -- 动态到静态构造转换
- 可变参数列表
- dazhilu网站代码【完整篇】
- C++ Primer Chapter 10 关联容器之set & mutimap
- (转载)lepaiwed网站代码【全】
- 二进制数据的存入
- Eclipse中10个最有用的快捷键
- 不看公式自己复原魔方
- wed6699整站程序下载【首发】
- poj3415