在stdarg.h头文件中声明了一个类型va_list和3个与函数可变参数列表有关的宏:va_start、va_arg、va_end。
#include<stdarg.h> //包含宏相关的头文件
float average(int n_values,...)   //指定数量的值的平均值
{
   va_list   args;   //声明一个va_list 的变量
   int count;
   float sum=0;  
   var_start(args,n_values);
    for(count=0;count<n_values;count++)
    {
       sum+=va_arg(args,int);
    }
    var_end(args);      
    return sum/n_values;
}

说明:

var_start(args,n_values);

第一个参数为va_list变量,第二个参数为参数列表中最后一个有名字的参数。作用是使args指向省略号部分的第一个参数。

va_arg(args,int);

第一个参数为va_list变量,第二个参数为参数列表中下一个参数的类型。该类型有时候需要由前面获得的数据类型来判断。该函数宏的作用是返回args所指的当前参数的值,并使其指向下一个可变参数的地址。

var_end(args);

完成处理可变参数。

转载于:https://www.cnblogs.com/lulululu/p/3693839.html

c语言中的函数可变参数列表相关的三个宏相关推荐

  1. C语言_函数可变参数列表

    函数可变参数列表的应用和原理 在网上看到各位前辈关于这部分的介绍有些是过于简洁,有些则是过于晦涩,有的代码拿出来甚至在编译器上跑不过去,所以在这里讲一下自己对于可变参数的认识,若有不正确的地方,欢迎各 ...

  2. php函数可变参数列表,PHP函数可变参数列表的具体实现方法介绍

    也许对于PHP初级程序员来说,对于PHP函数并不能完全熟练的掌握.我们今天为大家介绍的PHP函数可变参数列表的实现方法主要是利用func_get_args(). func_num_args().fun ...

  3. python 函数参数列表_Python 函数可变参数列表*args和**kwargs

    许多语言都支持可变参数列表,python也不例外.python的可变参数列表有点不太一样,有两种类型的可变参数列表,一种是元组,一种是字典. 一,元组参数列表: (1)函数定义形式:def func( ...

  4. c++函数可变参数列表foo(int a, ...){}中的省略号“...”

    int add(int num,...) /*求和函数*/ {va_list args;int sum=0;va_start(args,num);for(int i=0;i<num;i++)su ...

  5. C语言实现可变参数列表的system接口:宏__VA_ARGS__

    目录 t_shell.h t_shell.c 效果 t_shell.h /* file name: t_shell.h* author: Rong Tao* create time: 2018.11. ...

  6. C语言中函数的参数列表为空和void的区别

    C标准和C++标准在main函数上是有区别的,所以我分别详细来介绍他们. 对于C语言: C89标准的main()函数是可接受的,尽管现在建议是使用C99的标准.C99标准只定义了如下两种可接受的函数原 ...

  7. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  8. C语言中可变参数列表

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105113526 可 ...

  9. c语言 函数多个参数,C语言函数可变参数

    C语言函数可变参数教程 可变参数的函数必须至少有一个强制参数,可选参数的类型可以变化.可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定. 对于每一个强制参数来说,函数头部都会显示 ...

最新文章

  1. Caffe 中关于 LetNet-5 网络的定义文件 lenet.prototxt 解析
  2. dom对html增删改操作,6.DOM对HTML元素的增删改操作
  3. python 结束进程 terminate_python – 如果已存在浏览器窗口,则process.terminate()不适用于chrome / firefox子进程...
  4. 简述Python中的break和continue的区别
  5. Editplus的扩展程序的删除
  6. Python 画樱花(动态画+飘落效果+暗色效)
  7. 图像识别中卷积神经网络“卷积”的作用
  8. openssl 开启AES-NI指令集性能增加
  9. 七分钟理解什么是 KMP 算法
  10. 带有骆驼,ActiveMQ,Elasticsearch的HL7关键用例
  11. @程序员,入行物联网的避坑指南!| 技术头条
  12. B站,N站,汤站,爬虫下载资源总结与技巧(一)
  13. 【03】AngularJS 简介
  14. 质量值体系 Phred33 和 Phred 64 的由来 及其在质量控制中的实际影响
  15. 数字电路与逻辑设计——加法器实现
  16. 最新xcode打包IPA----2021.1.18(完整详细图文)
  17. 网页制作中PS图像处理的应用
  18. Atitit 艾提拉整理清明节的诗歌集合 清明节的特征 万物复苏 百草发芽 尝试从股市 其他外国诗歌集 得到清明的诗歌 约谈春天 歌颂春天 下雨 不见方三日、 夜来风雨声,花落知多少。(
  19. 过滤多余的空格-C语言
  20. 小说阅读网html+css+JavaScript

热门文章

  1. 200多个恶意NPM程序包针对Azure 开发人员,发动供应链攻击
  2. 美国太空部队加入美国情报系统,以确保太空的安全
  3. 谷歌修复已遭利用的 0day
  4. 【postMan】发送post请求,返回错误码415
  5. 用Java实现HTTP文件队列下载
  6. 最简单的 RabbitMQ 监控方法 - 每天5分钟玩转 OpenStack(158)
  7. Qt:QListWidget的item上实现右键菜单
  8. Bash中命令连接符的用法——一次执行多个命令-转
  9. 学习linux/unix编程方法的建议-转
  10. mysql xml生成工具_mybatis-generator 代码自动生成工具