C使用 stdarg 宏来实现函数的可变参数列表
来源:互联网 发布:阿里云主营业务 编辑:程序博客网 时间:2024/06/04 18:18
- 先贴一个代码实例,然后再进行讲解:
#include <stdio.h>#include <stdarg.h>float average(int n_values, ...) { va_list var_arg;int count;float sum = 0;va_start(var_arg, n_values);for (count = 0; count < n_values; count++) { sum += va_arg(var_arg, int);}va_end(var_arg);return sum / n_values;}int main(void) { printf("The average of 1, 2, 3, 4, 5 is : %f\n", average(5, 1, 2, 3, 4, 5));printf("The average of 1, 2, 3, 4, 5, 6 is : %f\n", average(6, 1, 2, 3, 4, 5, 6));return 0;}
- 函数声明了一个类型为 va_list (定义于 strarg.h 中) 的变量 var_arg ,它用于访问函数参数列表的未确定部分
- 接着这个变量 (va_arg) 通过调用函数 va_start 来初始化,va_atart 接受两个参数:
- 第一个参数为 va_list 变量的名字
- 第二个参数为省略号前最后一个有名字的参数
- 初始化过程把变量 var_arg 指向函数参数参数列表可变部分的第一个参数
- 接着使用函数 va_arg 来依次访问函数可变参数列表部分的参数,va_arg 函数接受两个参数:
- 第一个参数为 va_list 变量
- 第二个为欲访问的可变参数列表的参数的类型
- 在这个例子中这个参数类型 int 恰好是所有参数的类型,在更通常的情况你可能学要根据前一个参数的类型来推测后一个参数的类型
- 函数 va_arg 返回这个参数的值,并使得 va_arg 指向列表的下一个可变参数
- 最后当访问完最后一个参数后需要调用函数 va_end 来销毁一些相关的变量
- 使用可变参数的限制:
- 其它在使用可变参数列表时需要注意的:
- C使用 stdarg 宏来实现函数的可变参数列表
- [C语言]利用stdarg.h来实现可变参数列表
- 可变参数列表的宏和<stdarg.h>实现函数的可变参数列表
- c语言—stdarg宏(函数可变参数实现)
- 可变参数列表:stdarg宏
- 可变参数列表通过宏来实现(头文件stdarg.h)
- 可变参数列表,stdarg
- 使用varargs.h/stdarg.h 实现可变参数函数
- 用库函数stdarg.h实现函数参数的可变
- 可变参数函数stdarg
- C 语言的可变参数类型 stdarg
- 可变参数列表<stdarg.h>
- C中可变参数列表函数的实现
- C 语言下的 可变参数列表函数实现
- 使用可变参数列表实现求平均值的函数
- Matlab中使用varargin来实现参数可变的函数
- Matlab中使用varargin来实现参数可变的函数
- Matlab中使用varargin来实现参数可变的函数
- 树型动态规划小练
- Unique Paths II
- Files 的值“<<<<<<< .mine”无效。路径中具有非法字符。
- Axis2开发环境的搭建
- centos64位lamp配置第二步:源码编译apache2.2.25
- C使用 stdarg 宏来实现函数的可变参数列表
- Linux编辑器vi使用方法详细介绍
- Android在主UI中使用Socket服务
- jdbc mysql 中文乱码问题的解决
- Length of Last Word
- Activity中的onCreate(Bundle savedInstanceState)
- linux下使用python进行opencv开发
- 关于栈的习题的解答
- 控制随机抽中几率 [ C# | Random ]