va_list
键入以保存有关变量参数的信息

va_start
初始化变量参数列表
初始化ap以检索参数paramN后面的附加参数。
调用va_start的函数在返回之前也应调用va_end。

参数不能是引用类型,也不能是与传递没有参数的参数时产生的类型不兼容的类型。

/* va_start example */
#include <stdio.h>      /* printf */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */void PrintFloats (int n, ...)
{int i;double val;printf ("Printing floats:");va_list vl;va_start(vl,n);for (i=0;i<n;i++){val=va_arg(vl,double);printf (" [%.2f]",val);}va_end(vl);printf ("\n");
}int main ()
{PrintFloats (3,3.14159,2.71828,1.41421);return 0;
}

va_end
定义:
结束使用变量参数列表
执行适当的操作,以便于使用va_list对象ap检索其附加参数的函数正常返回。
无论何时从该函数调用va_start,都应在函数返回之前调用该宏。

返回值:
none

实例:

/* va_end example */
#include <stdio.h>      /* puts */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */void PrintLines (char* first, ...)
{char* str;va_list vl;str=first;va_start(vl,first);do {puts(str);str=va_arg(vl,char*);} while (str!=NULL);va_end(vl);
}int main ()
{PrintLines ("First","Second","Third","Fourth",NULL);return 0;
}

参考:
http://www.cplusplus.com/reference/cstdarg/va_start/

va_list/va_start/va_end的使用相关推荐

  1. va_list va_start va_end的使用

    <pre name="code" class="cpp" style="color: rgb(51, 51, 51); white-space: ...

  2. 对va_list; va_start ; va_end ;vsprintf理解(转)

    以下为转载内容: 1 int printf(const char* fmt, ...) 2 { 3 va_list args; 4 int i; 5 //1.将变参转化为字符串 6 va_start( ...

  3. vsnprintf va_list va_start va_end

    1.函数原型: int vsnprintf(char *str, size_t size, const char *format, va_list ap); 某度百科: _vsnprintf是C语言库 ...

  4. 变长参数va_list va_start va_arg va_end

    对于int printf(const char *format, ...);这种变长参数,需要使用va_list va_start va_end va_arg来访问参数. 下面是一个tutorials ...

  5. va_list/va_start/va_arg/va_end深入分析

    va_list/va_start/va_arg/va_end这几个宏,都是用于函数的可变参数的. 我们来看看在vs2008中,它们是怎么定义的: 1: ///stdarg.h 2: #define v ...

  6. 可变参数列表(va_list,va_arg,va_copy,va_start,va_end)

    本文转自:http://blog.csdn.net/costa100/article/details/5787068 va_list arg_ptr:定义一个指向个数可变的参数列表指针: va_sta ...

  7. C语言 va_start / va_end / va_arg 自定义 printf 函数 - C语言零基础入门教程

    目录 一.前言 二.函数不定长参数简介 1.va_start 2.va_arg 3.va_end 三.win32 控制台版本 四.MFC 对话框版本 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

  8. C语言使用函数参数传递中的省略号:va_list, va_start, va_arg, va_end

    首先要处理这种省略号的参数的话,需要包含头文件#include <stdarg.h>,然后利用下面的函数对"..."省略号变量进行处理. va_list arg; ty ...

  9. 如何获取函数的变长参数(va_list, va_start, va_arg, va_end)

    最近在花时间研读C++. 函数这章讲到了函数的变长参数(ellipsis...),但是primer中讲得比较浅,提到了怎么声明怎么调用,但是没有写明在函数内部是如何获取变长的参数的. 1)省略号(el ...

最新文章

  1. web性能优化——关键渲染路径(上)
  2. 数据挖掘之关联分析七(非频繁模式)
  3. 《Node.js区块链开发》——1.6 参考
  4. python实现var模型_copula函数及其Var计算的Python实现
  5. 把类成员改成指针_如果类中存在管理其他类对象的指针,通过析构函数释放它们...
  6. DFS破解“迷宫问题”(洛谷P1605题题解,Java语言描述)
  7. 注册围框html,一种可调模具围框的制作方法
  8. Numpy——numpy属性
  9. C/C++ 活动预处理器
  10. 算法:翻转图片Rotate Image
  11. 一键提取app源码_【补发】自动答题脚本教程及源码分享(无视分辨率)
  12. Redis集群原理和总结
  13. 为什么大部分人,会对南北经济“差距”产生误解?
  14. 如何检索论文被引用情况
  15. Round Roundup
  16. CS:APP第六章知识总结(内存、缓存、locality)
  17. 智能分析的所见即所得——基于Lambda架构的实时数据引擎
  18. HTML——表单标签<form>与表单的实现
  19. win10删除多余账户_win10删除多余账户,win10
  20. Oracle Database 12c Security - 6. Real Application Security

热门文章

  1. 区块链中密码学与安全技术
  2. 12个有趣的C语言面试题
  3. 架构设计--仅是软件开发之第二大影响力?!
  4. mybatis3 中 @Provider 的使用方式
  5. 出现 java.lang.NullPointerException 的几种原因、可能情况
  6. Docker容器硬盘热扩容-centos6
  7. 解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘
  8. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
  9. Coolite动态加载CheckboxGroup,无法在后台中获取
  10. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会