如我們經常用的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.現在我們舉個實例
<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>