博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C和指针》——stdarg宏简介
阅读量:4098 次
发布时间:2019-05-25

本文共 912 字,大约阅读时间需要 3 分钟。

可变参数列表是通过宏来实现的,这些宏定义于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 
#include
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# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
QT跨MinGW和MSVC两种编译器的解决办法
查看>>
firewalld的基本使用
查看>>
在 Linux 中找出所有在线主机的 IP 地址
查看>>
Linux下SVN客户端使用教程
查看>>
i2c-tools
查看>>
Linux分区方案
查看>>
Linux 查看服务器开放的端口号
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>