省略符形参
省略符形参仅仅是用于C和C++通用的类型,特别注意的是,大多数类类型的对象在传递时给省略符形参时是无法正确拷贝的。
省略号的优先级别最低,所以在函数解析时,只有当其它所有的函数都无法调用时,编译器才会考虑调用省略号函数的。
举例:
#include<iostream> // 要处理不定参数的函数要包含头文件:#include <stdarg.h>
#include<stdarg.h>
using namespace std;
void ArgFunc(char* str,...);
int main(int argc,char **argv)
{
ArgFunc("dfsa","fsda",23,35.4);
system("pause");
return 0;
}
void ArgFunc(char *str,...)
{
va_list ap; //先定义一个参数列表变量:va_list ap;
va_start(ap,str); // 确定不定参数所在的位置,这里第二个参数是本函数的第一个形参
char* ss=va_arg(ap,char*); // 获取参数并指明类型,如:va_arg(ap, char*);获取第一个参数,并指明类型为char*
int i=va_arg(ap,int);
double dd=va_arg(ap,double);
cout<<ss<<" "<<i<<" "<<dd<<endl;
}
#include<stdarg.h>
using namespace std;
void ArgFunc(char* str,...);
int main(int argc,char **argv)
{
ArgFunc("dfsa","fsda",23,35.4);
system("pause");
return 0;
}
void ArgFunc(char *str,...)
{
va_list ap; //先定义一个参数列表变量:va_list ap;
va_start(ap,str); // 确定不定参数所在的位置,这里第二个参数是本函数的第一个形参
char* ss=va_arg(ap,char*); // 获取参数并指明类型,如:va_arg(ap, char*);获取第一个参数,并指明类型为char*
int i=va_arg(ap,int);
double dd=va_arg(ap,double);
cout<<ss<<" "<<i<<" "<<dd<<endl;
}