C语言函数可变参数列表
C语言允许使用可变参数列表,我们常用的printf函数即为可变参数函数,C标准库提供了stdarg.h为我们提供了这方面支持;该头文件提供了一些类型和宏来支持可变参数列表,包括类型va_list,宏va_start、va_arg、va_end;
可变函数参数定义方法:
#include <stdarg.h>
void func(int count,...){
va_list ap;
int ix, tmp;
va_start(ap, count);
for(ix=0;ix < count; ++ix){
tmp = va_arg(ap, int);
//process the param
}
va_end(ap);
}
函数的第一个参数count是必不可少的,即你定义的可变参数列表函数至少要有一个参数;
va_list:一般会定义为char *;
va_start(va_list ap, paramN):初始化ap的值,指向第一个可变参数
va_arg(va_list ap, TYPE):将根据TYPE从ap指向出获得实际的值,并移动ap指针
va_end: 一般什么都不做
C语言函数可变参数列表的更多相关文章
- PHP函数可变参数列表的具体实现方法介绍
PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会 ...
- php实现函数可变参数列表
使用func_get_args().func_num_args().func_get_arg() 可以构造一个可变参数列表的函数. 首先大致介绍以上三个函数. (1)array func_get_ar ...
- 可变参数列表与printf()函数的实现
问题 当我们刚开始学习C语言的时候,就接触到printf()函数,可是当时"道行"不深或许不够细心留意,又或者我们理所当然地认为库函数规定这样就是这样,没有发现这个函数与普通的函数 ...
- [转]深度探索C语言函数可变长参数
转自:http://www.cnblogs.com/chinazhangjie/archive/2012/08/18/2645475.html 一.基础部分 1.1 什么是可变长参数 可变长参数:顾名 ...
- C语言中可变参数的函数(三个点,“...”)
C语言中可变参数的函数(三个点,“...”) 本文主要介绍va_start和va_end的使用及原理. 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end ...
- C利用可变参数列表统计一组数的平均值,利用函数形式参数栈原理实现指针运算
//描述:利用可变参数列表统计一组数的平均值 #include <stdarg.h> #include <stdio.h> float average(int num, ... ...
- 【C/C++开发】C语言实现函数可变参数
函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: ...
- C语言中可变参数的原理——printf()函数
函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: 使用过C语言的人所再熟悉不过 ...
- [11 Go语言基础-可变参数函数]
[11 Go语言基础-可变参数函数] 可变参数函数 什么是可变参数函数 可变参数函数是一种参数个数可变的函数. 语法 如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最 ...
随机推荐
- LINQ查询操作符 LINQ学习第二篇[转]
一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataCo ...
- Ubuntu安装二:在VM中安装Ubuntu
在VM中安装Ubuntu,先的安装VM,VM的安装请见:http://blog.csdn.net/u011043843/article/details/35291799 1.打开VM,新建虚拟机 2. ...
- grep -v grep 代表在查询的最终结果中去掉grep命令本身
grep -v grep 代表在查询的最终结果中去掉grep命令本身
- bootstrap注意事项(四)表格
1.基本实例 为任意 <table> 标签添加 .table 类可以为其赋予基本的样式 — 少量的内补(padding)和水平方向的分隔线.这种方式看起来很多余!?但是我们觉得,表格元素使 ...
- js 和 jsp关系
http://stackoverflow.com/questions/11718063/use-javascript-or-jquery-inside-a-cif-statement 纠结了半天的问题
- JavaWeb核心编程之Tomcat安装和配置
什么是JavaWeb 在Sun的Java Servlet规范中, 对Java Web应用做了这样的定义: "Java Web应用由一组Servlet, HTML页面, 类, 以及其他可以被绑 ...
- 幻世(OurDream)2D图形引擎易语言汉化版更新提示
幻世引擎的易语言汉化专版到目前为止已经累积了多个BUG,其中多个BUG是影响引擎功能使用的问题,我将会在近期发布修复所有问题的更新版本(此更新版本同时也将会支持最新的对加入的粒子系统的支持),敬请各位 ...
- Facebook 调试工具Stetho配置入门
I decided to spend a few hours on Stetho.Stetho is a sophisticated debug bridge for Android applicat ...
- php数组排序和分割字符串
function sortStr($str){ $ary = str_split($str); sort($ary); $len = count($ary); $arr = array(); for( ...
- 关于js作用域
我们知道在编程语言中,作用域的作用就是控制变量.参数的可见范围和生命周期. 同时内部函数也可访问外部的函数和变量. js中提供了函数作用域的功效,比如在函数中定义的变量外部是无法访问到的: funct ...