您的位置:首页 > 编程语言 > C语言/C++

C语言函数变参问题

2016-05-30 17:29 309 查看
C语言是支持函数的参数个数不确定的情况,例

如我们经常用的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++ c语言 函数 变参