- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
菜鸟问与答(函数)
1、什么是函数
在C语言中,完成一个特定任务的程序段、子程序称作函数,在一个完整的C程序中,通常是由很多个函数组成的,每一个函数完成其指定的任务。
2、什么是函数原型
一个函数有函数名、函数的返回值及返回值的类型、函数的参数及参数的类型。对函数的所有这些特征予以描述称作函数的原型。函数原型一般放在整个程序文件的开始部分(内部函数)。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件必须包含这个头文件。
3、什么是函数的返回值
当一个函数执行完之后传递给调用函数一个值,称为返回值。是否需要返回一个值给调用函数,具体情况视程序中的需要而定,有时根本就不需要返回一个值给调用函数。
4、为什么要说明函数的原型
函数原型能告诉编译程序一个函数接受什么样的参数,将返回什么样的返回值,这样编译程序就能检查对函数的调用是否正确,是否存在错误的类型转换。例:
int some_func(int,char *,long);
编译程序应会检查所有对该函数的调用(包括该函数的定义)是否使用了三个参数并且返回一个int类型的值。如果编译程序发现函数的调用或定义与函数原型不匹配,编译程序应会报告出错或警告信息。例如对上述函数原型来说,当编译程序检查以下语句时,就会报告出错或警告消息:
x=some_func(1); /*参数个数少*/
x=some_func(HELLO!,1,DUDE!); /*参数类型错误*/
x=some_func(1,str,2879,T); /*参数太多*/
下面的函数调用同样是不正确的,因为函数some_func()的返回值不是一个long *类型的值。
lValue=some_func(1,str,2879); /*函数返回值应该是int而不是long型。*/
同样编译程序还能检查函数的定义(或函数体)是否与函数原型匹配。例如当编译程序检查以下函数定义时,应会报告出错或警告信息:
int some_func(char * string,,long lValue,int iValue) /*参数的位置不对*/
总之,在源文件中说明函数原型提供了一种检查函数是否被正确引用的机制。目前许多流行的编译程序都会检查被引用的函数的原型是否已在源文件中说明过,如果没有,就会发出警告信息。
5、一个函数可以有多少个参数
一个函数的参数的数目没有明确的限制,但是参数过多(例如超过8个)显然是一种不可取的编程风格。参数的数目直接影响到调用函数的速度,参数越多,函数调用越慢。另一方面,函数的参数少,程序就显得精练、简捷,这有助于检查和发现程序中的错误,因此通常应该尽量减少参数的数目,如果一个函数的参数超过4 个,就应该考虑一下函数是否编写得当。如果一个函数不得不使用很多参数,可以定义一个结构来容纳这些参数,这是一种非常好的解决办法。
在下例中,函数print_report()需要使用10个参数,然而在它的参数说明中并没有列出这些参数,而是通过一个RPT_PARMS的结构得到这些参数。
#includestdio.h
typedef struct
{
int orientation;
char rpt_name[25];
char rpt_path[40];
int destination;
char output_file[25];
int starting_page;
char ending_page;
char db_name[25];
char db_path[40];
int draft_quality;
}RPT_PARMS;
int print_report(RPT_PARMS *);
void main(void)
{
RPT_PARMS rpt_parm;
...
...
rpt_parm.orientation=ORIENT_LANDSCAPE;
rpt_parm.rpt_name=QSALES.RPT;
rpt_parm.rpt_path=C:\REPORTS;
rpt_parm.destingation=DEST_FILE;
rpt_parm.output_file=QSALES.TXT;
rpt_parm.starting_page=1;
rpt_parm.ending_page=RPT_END;
rpt_parm.db_name=SALES.DB;
rpt_parm.db_path=C:\DATA;
rpt_
您可能关注的文档
最近下载
- 第四章战国、秦、汉、三国时期的建筑详解.ppt VIP
- T_HAEPCI 55—2023(有色冶炼场地土壤-地下水重金属污染协同修复与管控技术指南).pdf VIP
- 青春筑梦婴幼儿托育服务与管理专业启航未来职业生涯.pptx VIP
- 【新教材】2025-2026学年统编版(2024)三年级道德与法治上册第1课《学习伴我成长》课件.pptx
- T ACEF 111—2023 焦化污染土壤多环芳烃生物修复智能监测预警技术指南.pdf VIP
- MTT 114-2005 煤矿用多级离心泵.pdf VIP
- TACEF 112-2023 焦化污染土壤多环芳烃生物修复智能监测设备配置技术指南.pdf VIP
- GBT18479-2001 地面用光伏(PV)发电系统 概述和导则.pdf
- 低血容量性休克的护理.pptx VIP
- 2《住宅项目规范》宣贯培训-第3章.pdf
文档评论(0)