C语言函数变参问题
2016-05-30 17:29
309 查看
C语言是支持函数的参数个数不确定的情况,例
如我们经常用的printf()函数就是如此。
上面的 参数 I 和 j 就是变参,我们无确定要给这个函数多少参数的时候就会想到用变参。
使用变参的方法如下:
3.现在我们举个实例
用getmax(int num,...)函数求最大值。
eg: getmax(3,1,2,3),求1,2,3的最大值
输出结果是: the max number is 44
如我们经常用的printf()函数就是如此。
<span style="font-family:Microsoft YaHei;">//extern void printf(const char *format,...); printf("i=%d;j=%d", i, j);</span>
上面的 参数 I 和 j 就是变参,我们无确定要给这个函数多少参数的时候就会想到用变参。
使用变参的方法如下:
1. 头文件:
<span style="font-family:Microsoft YaHei;">#include<stdarg.h></span>
2. 可以使用的方法:
<span style="font-family:Microsoft YaHei;">type va_arg( //遍历参数表 va_list arg_ptr, type ); void va_copy( //复制参数表 va_list dest, va_list src ); // (ISO C99 and later) void va_end( //释放参数表 va_list arg_ptr ); void va_start( //初始化参数表1 va_list arg_ptr, prev_param ); // (ANSI C89 and later) void va_start( //初始化参数表2 arg_ptr ); // (Pre-ANSI C89 standardization version)</span>
3.现在我们举个实例
用getmax(int num,...)函数求最大值。
eg: getmax(3,1,2,3),求1,2,3的最大值
<span style="font-family:Microsoft YaHei;">#include<iostream> #include<stdarg.h> using namespace std; //num必须是表示这个形参的个数 int getmax(int num,...) { int m=-0xffffffff; //初始化m为一个最小值 va_list va; //声明一个参数表 va_start(va,num); //初始化一个参数表 while(num--) { int t=va_arg(va,int); //开始遍历参数表 if(t>m) //计算最大值 m=t; } va_end(va); //结束释放这个表 return m; } void main() { /* double i1=3,i2=8; long i3=44;*/ int i1=3,i2=8; int i3=44; cout<<"the max number is "<<getmax(3,i1,i2,i3)<<endl; }</span>
输出结果是: the max number is 44
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 如何组织构建多文件 C 语言程序(二)
- 关于指针的一些事情
- 如何写好 C main 函数
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua和C语言的交互详解