本文主要是介绍《C和指针》——stdarg宏简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。这个头文件声明了一个类型 va_list 和三个宏—— va_start、va_arg 和 va_end。我们可以声明一个类型为 va_list 的变量,与这几个宏配合使用,访问参数值。
函数声明了一个名叫 var_arg 的变量,它用于访问参数列表的未确定部分。这个变量通过调用 va_start 来初始纶。它的第1个参数是 va_list 变量的名字,第2个参数是省略号前最后一个有名字的参数。初始化过程把 var_arg 变量设置为指向可变参数部分的第1个参数。
为了访问参数,需要使用 va_arg ,这个宏接受两个参数:va_list 变量和参数列表中下一个参数的类型。下面这个例子中,所有的可变参数老师整型。在有些函数中,可能要通过前面获得的数据来判断下一个参数的类型。va_arg返回这个参数的值,并使 var_arg 指向下一个可变参数。
最后,当访问完毕最后一个可变参数之后,我们需要调用 va_end。
程序示例:
#include <iostream>
#include <stdarg.h>using namespace std;float average(int n_values, ...){va_list var_arg;float sum = 0; //准备访问可变参数va_start(var_arg, n_values);//添加取自可变参数列表的值for (int count = 0; count < n_values; ++count){sum += va_arg(var_arg, int);}//完成处理可变参数va_end(var_arg);return sum / n_values;
}int main(){int n_values = 6;cout << average(6, 1, 2, 3, 4, 5, 6) << endl;return 0;
}
程序结果:
这篇关于《C和指针》——stdarg宏简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!