⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;战&nbsp;&nbsp;&nbsp;斗&nbsp;&nbsp;&nbsp;世&nbsp;&nbsp;&nbsp;家&nbsp;&nbsp;&nbsp;C&nbsp;语言讲座&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#4&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作者:&nbsp;Lgw&nbsp;Lu&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E-Mail:&nbsp;<A HREF="mailto:lgwlu@ms1.hinet.net">lgwlu@ms1.hinet.net</A>&nbsp;<BR>---------------------------------------------------------------&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<&nbsp;死角&nbsp;-&nbsp;不定参数&nbsp;>&nbsp;<BR>&nbsp;<BR>前言:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;语言有很多功能,但有些功能很可能因为不常用,So&nbsp;慢慢被人遗&nbsp;<BR>&nbsp;&nbsp;忘。本篇介绍就是常不被人注意的&nbsp;不定参数!!&nbsp;<BR>&nbsp;<BR>内文:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相信大家都用过&nbsp;printf&nbsp;这个函数,这就是利用不定参数,来达到&nbsp;<BR>&nbsp;&nbsp;参数项目不固定的目的。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是请注意,由於&nbsp;K&amp;R&nbsp;C&nbsp;中并不检查参数型态,so&nbsp;在此是用&nbsp;ANSI&nbsp;<BR>&nbsp;&nbsp;C&nbsp;来说明,毕竟&nbsp;ANSI&nbsp;C&nbsp;是目前所有&nbsp;C&nbsp;Compiler&nbsp;都支援的标准;常在&nbsp;<BR>&nbsp;&nbsp;网路上看到有人推荐&nbsp;K&amp;R&nbsp;The&nbsp;C&nbsp;Programming&nbsp;Language&nbsp;这本书,老&nbsp;<BR>&nbsp;&nbsp;实说这本是不错(我以前也是看这本),但因为&nbsp;K&amp;R&nbsp;C&nbsp;慢慢因为&nbsp;ANSI&nbsp;<BR>&nbsp;&nbsp;C&nbsp;的完整标准出现,而面临考验,所以我建议若是初学者先从&nbsp;ANSI&nbsp;C&nbsp;<BR>&nbsp;&nbsp;看起,等对&nbsp;ANSI&nbsp;C&nbsp;的标准了解後,再回头看这本(其实不看也没差,虽&nbsp;<BR>&nbsp;&nbsp;然它号称&nbsp;C&nbsp;语言圣经,但时代在变,有些东东开始不适用。不过还是有&nbsp;<BR>&nbsp;&nbsp;看的价值)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;宣告&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|-&nbsp;&gt;&nbsp;&nbsp;ANSI&nbsp;C&nbsp;不定参数宣告方式&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;FUNC(int,...)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;固定的参数一定要放前面!!&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;副程式部份&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;FUNC(int&nbsp;xx,...)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tmp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_list&nbsp;arg_ptr;&nbsp;&nbsp;&nbsp;//&nbsp;指向引数列表的&nbsp;Pointer&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_start(arg_ptr,xx);&nbsp;//&nbsp;从引数表中取得第一个引数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第一个引数就是&nbsp;xx&nbsp;自己&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp=va_arg(arg_ptr,int);&nbsp;&nbsp;//&nbsp;从引数表中取得int&nbsp;型态引数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;一直呼叫&nbsp;va_arg&nbsp;即可取得所&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;有引数&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_end(arg_ptr);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;取完後将&nbsp;arg_ptr&nbsp;=&nbsp;NULL&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;以便归还&nbsp;stack&nbsp;空间&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;理论上不定参数是可以无限多的,但碍於&nbsp;memory&nbsp;及&nbsp;stack&nbsp;大小&nbsp;<BR>&nbsp;&nbsp;所以项数通常有上限,如&nbsp;Turbo&nbsp;C&nbsp;最多&nbsp;200&nbsp;个,一超过就出现如下&nbsp;<BR>&nbsp;&nbsp;&quot;&nbsp;Fatal&nbsp;stack&nbsp;overflow&nbsp;error-System&nbsp;halted&nbsp;&quot;,然後当掉,你连&nbsp;<BR>&nbsp;&nbsp;暖开机都不行;所以当你使用一套&nbsp;Compiler&nbsp;时一定要有其参考手册&nbsp;<BR>&nbsp;&nbsp;或资料,以免搞半天除错後,还找不出原因!!&nbsp;<BR>&nbsp;&nbsp;(P.S.&nbsp;像&nbsp;Turbo&nbsp;C&nbsp;2.0&nbsp;只能用&nbsp;4000&nbsp;个&nbsp;if&nbsp;,....太多要注意的!!)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说了一堆,不知道你会用了没?!&nbsp;最後用一个画多边型的函数做□&nbsp;<BR>&nbsp;&nbsp;例,顺便做结束。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;EX&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&lt;stdarg.h&gt;&nbsp;&nbsp;&nbsp;//&nbsp;记得要&nbsp;include&nbsp;才能用&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;END_P&nbsp;&nbsp;-400&nbsp;&nbsp;&nbsp;//&nbsp;用来判断是否为最後一个参数&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;DrawPoly(int&nbsp;color,...)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_list&nbsp;arg_ptr;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x[200],y[200];&nbsp;&nbsp;&nbsp;//&nbsp;最多&nbsp;200&nbsp;个点&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;p_c=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;计算有几点&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;计数器&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_list(arg_ptr,color);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(((x[p_c]=va_arg(arg_ptr,int))&gt;END_P)&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;((y[p_c]=va_arg(arg_ptr,int))&gt;END_P)\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;p_c&lt;=200)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;不是最後一点且小於&nbsp;200&nbsp;个点&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p_c++;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(p_c&lt;3)&nbsp;return&nbsp;;&nbsp;&nbsp;//&nbsp;不到&nbsp;3&nbsp;点不成一多边型,So&nbsp;跳出&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;p_c-1;i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;划线,每个&nbsp;Compiler&nbsp;不同,自行修改&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line(x[i],y[i],x[i+1],y[i+1],color);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;最後一条线&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line(x[0],y[0],x[p_c-1],y[p_c-1],color);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;va_end(arg_ptr);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了!!以上就是不定参数介绍,若还有问题再问我啦!!其实不定参&nbsp;<BR>&nbsp;&nbsp;数应用还很多,当你了解後,慢慢会发现更多技巧!!&nbsp;<BR>&nbsp;&nbsp;(P.S.&nbsp;记得不可用&nbsp;pascal&nbsp;宣告函式呦!!)&nbsp;<BR>&nbsp;<BR>预告:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近也许因为&nbsp;GAME&nbsp;的关系,越来越多人开始使用&nbsp;Watcom&nbsp;C/C++&nbsp;<BR>&nbsp;&nbsp;当然也就有很多这套&nbsp;Compiler&nbsp;的问题出现,下篇就为你介绍一些写&nbsp;<BR>&nbsp;&nbsp;作技巧,至於使用方法,看看&nbsp;HELP&nbsp;应该就没问题了,当然&nbsp;Watcom&nbsp;C&nbsp;<BR>&nbsp;&nbsp;东东实在太多,So&nbsp;只介绍一部份,再有问题再问啦!!&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;写&nbsp;GAME&nbsp;利器&nbsp;-&nbsp;Watcom&nbsp;C/C++&nbsp;&gt;&nbsp;<BR>&nbsp;<BR>---------------------------------------------------------------&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&lt;&nbsp;本文版权属於作者&nbsp;&gt;&gt;&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文章可自由引用,拷贝,传阅,但需保持本文章之完整性,从标题&nbsp;<BR>&nbsp;&nbsp;到最後版权宣告,且不能用来做商业用途!!&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;若有任何问题,或是错误之处,欢迎来信批评指教!!&nbsp;谢谢!!&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -