200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > c语言 省略参数 C语言重载函数之省略符形参

c语言 省略参数 C语言重载函数之省略符形参

时间:2021-02-25 01:31:41

相关推荐

c语言 省略参数 C语言重载函数之省略符形参

在c++ primer书上看到标题为“含有可变形参的函数”的章节,内容如下:

省略符形参有下列两种形式:

void foo ( parm_list , …);

void foo ( … );

第一种形式为特定数目的形参提供了声明。在这种情况下,当函数被调用时,对于与显示声明的形参相对应的实参进行类型检查,而对于与省略符对应的实参则暂停类型检查。在第一钟形式中,形参声明后面的逗号是可选的。

答:

你可以传递任意数量的参数给他,所以当然跟没有参数的函数有区别了(没有参数的函数,你是不可以给他传递任何参数的)。

楼主提醒一点:省略号的优先级别最低,所以在函数解析时,只有当其它所有的函数都无法调用时,编译器才会考虑调用省略号函数的。#include#includevoidArgFunc(constchar*str,...)

{

va_listap;

intn=3;

char*s=NULL;

intd=0;

doublef=0.0;

va_start(ap,str);//注意!这里第二个参数是本函数的第一个形参

s=va_arg(ap,char*);

d=va_arg(ap,int);

f=va_arg(ap,double);//浮点最好用double类型,而不要用float类型;否则数据会有问题

va_end(ap);

printf("%sis%s%d,%f",str,s,d,f);

}

voidmain()

{

ArgFunc("Theanswer","Hello",345,788.234);

}

对于void ArgFunc(const char *str, …):

首先,如果要处理不定参数的函数要包含头文件:stdarg.h

然后在处理不定参数的函数中先定义一个参数列表变量:va_list ap;

第二步:确定不定参数所在的位置。在这里,第一个参数为str,因此要从第二个参数进行获取参数列表。va_start(ap, str);表示在str参数之后获取参数。由于C调用是从右到左依次将参数压入堆栈的,因此处理起来比较容易。

第三步:获取参数并指明类型,如:va_arg(ap, char*);获取第一个参数,并指明类型为char*

在main()函数中就对应着实参”hello”;va_arg(ap, int);紧接着再取一个参数,并指明类型为int,对应main()函数中的实参345;va_arg(ap, double);再接着取第三个参数,并指明类型为double,对应main()中的实参788.234

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。