700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言给出太多参数 C语言中不定参数的实现

c语言给出太多参数 C语言中不定参数的实现

时间:2021-04-14 08:16:05

相关推荐

c语言给出太多参数 C语言中不定参数的实现

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

但是请注意,由於K&RC中并不检查参数型态,so在此是用ANSI

C来说明,毕竟ANSIC是目前所有CCompiler都支援的标准;常在

网路上看到有人推荐K&RTheCProgrammingLanguage这本书,老

实说这本是不错(我以前也是看这本),但因为K&RC慢慢因为ANSI

C的完整标准出现,而面临考验,所以我建议若是初学者先从ANSIC

看起,等对ANSIC的标准了解後,再回头看这本(其实不看也没差,虽

然它号称C语言圣经,但时代在变,有些东东开始不适用。不过还是有

看的价值)

//

//固定的参数一定要放前面!!

intFUNC(intxx,...)

{

inttmp;

va_listarg_ptr;//用va_list声明指向引数列表的Pointer

va_start(arg_ptr,xx);//从引数表中取得第一个引数

//第一个引数就是xx自己(xx是最后一个固定变量)

tmp=va_arg(arg_ptr,int);//从引数表中取得int型态引数

//一直呼叫va_arg即可取得所

//有引数(第二个参数int是当前不定变量的类型)

va_end(arg_ptr);//取完後将arg_ptr=NULL

//以便归还stack空间(要在所有的不定变量引用完之后再用va_end(),否则会有无法预测的结果。)

}

理论上不定参数是可以无限多的,但碍於memory及stack大小

所以项数通常有上限,如TurboC最多200个,一超过就出现如下

"Fatalstackoverflowerror-Systemhalted",然後当掉,你连

暖开机都不行;所以当你使用一套Compiler时一定要有其参考手册

或资料,以免搞半天除错後,还找不出原因!!

(P.S.像TurboC2.0只能用4000个if,....太多要注意的!!)

说了一堆,不知道你会用了没?!最後用一个画多边型的函数做□

例,顺便做结束。

/*EX*/

#include//记得要include才能用

#defineEND_P-400//用来判断是否为最後一个参数

voidDrawPoly(intcolor,...)

{

va_listarg_ptr;

intx[200],y[200];//最多200个点

intp_c=0;//计算有几点

inti;//计数器

va_list(arg_ptr,color);

while(((x[p_c]=va_arg(arg_ptr,int))>END_P)\

&&((y[p_c]=va_arg(arg_ptr,int))>END_P)\

&&p_c<=200)//不是最後一点且小於200个点

p_c++;

if(p_c<3)return;//不到3点不成一多边型,So跳出

for(i=0;i

//划线,每个Compiler不同,自行修改

line(x[i],y[i],x[i+1],y[i+1],color);

//最後一条线

line(x[0],y[0],x[p_c-1],y[p_c-1],color);

va_end(arg_ptr);

}

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