c语言—stdarg宏(函数可变参数实现)
来源:互联网 发布:库里1516赛季每场数据 编辑:程序博客网 时间:2024/05/21 21:49
可变参数列表可通过宏来实现,这些宏定义在stdarg.h头文件中,它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏----va_start,va_arg,va_end.可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数的值。参数列表的可变部分位于一个或多个普通参数(命名参数)的后面(即参数列表中至少要有一个命名参数),它在函数原型中以一个省略号表示。
例如:定义一个函数acerage可以计算若干个整数的平均值:
#include <stdarg.h>float average(int n_value,...){va_list var_arg;int count;float sum=0;va_start(var_arg,n_value);for(count =0;count<n_value;count++){sum+=va_arg(var_arg,int);}va_end(var_arg);return sum/n_values;}
为了访问参数,需要使用va_arg,这个宏接受两个参数:va_list类型变量和参数列表中下一个参数的类型。在这个例子中,所有的可变参数都是整型。va_arg返回这个参数的值,并使var_arg指向下一个可变参数。
最后,当访问完毕最后一个可变参数之后,需要调用va_end.
</pre><p></p><div style="top: 0px;"><p>可变参数列表可通过宏来实现,这些宏定义在stdarg.h头文件中,它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏----va_start,va_arg,va_end.可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数的值。</p><p>例如:定义一个函数acerage可以计算若干个整数的平均值:</p><p></p><pre name="code" class="cpp">#include <stdarg.h>float average(int n_value,...){va_list var_arg;int count;float sum=0;va_start(var_arg,n_value);for(count =0;count<n_value;count++){sum+=va_arg(var_arg,int);}va_end(var_arg);return sum/n_values;}
为了访问参数,需要使用va_arg,这个宏接受两个参数:va_list类型变量和参数列表中下一个参数的类型。在这个例子中,所有的可变参数都是整型。va_arg返回这个参数的值,并使var_arg指向下一个可变参数。
最后,当访问完毕最后一个可变参数之后,需要调用va_end.
0 0
- c语言—stdarg宏(函数可变参数实现)
- [C语言]利用stdarg.h来实现可变参数列表
- C 语言的可变参数类型 stdarg
- 可变参数(C语言):stdarg.h
- C使用 stdarg 宏来实现函数的可变参数列表
- 可变参数函数stdarg
- 可变参数列表的宏和<stdarg.h>实现函数的可变参数列表
- 用库函数stdarg.h实现函数参数的可变
- 使用varargs.h/stdarg.h 实现可变参数函数
- C语言可变参数及stdarg.h中的三个宏定义
- C语言可变参数及stdarg.h中的三个宏定义
- c语言实现函数可变参数
- C语言可变参数函数实现
- C语言可变参数函数的实现
- C语言可变参数函数的实现
- C语言可变参数的函数实现
- C语言可变参数实现函数重载
- c语言实现函数可变参数
- OC 字符串 数组 集合
- PHP程序员的技术成长规划
- 数组中出现次数超过一半的数字
- 进程与线程的区别(转)
- 【日记-C语言】今天看书,吸LFG
- c语言—stdarg宏(函数可变参数实现)
- 最小的K个数
- HDU2533 N皇后问题 DFS入门
- Chapter 3-exercise
- 【Java基础提高】分析Java的回调机制(二)
- k-近邻算法
- 连续子数组的最大和
- hdoj 5523 Game 【博弈】
- 整数中1出现的次数(从1到n整数中1出现的次数)