- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 函数 本章重点 1 函数的定义方法 2 函数的调用形式 3 实参与形参之间的传递方式 4 函数的嵌套调用与递归调用 5 变量的存储类别、作用域和生存期 一、概述 1 一个简单的C程序只要有一个主函数就可完成特定功能 例1:c1.c #include stdio.h main() { int a[3][3],t,k; for(t=0;t=2;t++) for (k=0;k=2;k++) a[t][k]=t*k; for(t=0;t=2;t++) for (k=0;k=2;k++) printf(“%4d”,a[t][k]); } 2 较大的程序一般按功能或操作将程序分为几个小模块 函数的类型: 1 从用户使用的角度来说 1) 库函数(标准函数p381附录5) 2) 用户自定义函数 2 从函数的形式来看 1)无参函数 void a1( ) { printf(“******************\n”);} /*主调函数与被调用函数之间不存在数据传递,只用来执行特定的操作*/ 2)有参函数 int ab(x,y) int ab(int x,int y) int x,y; { int n; n=(xy)?x:y; return n;} /*主调函数和被调用函数之间有数据传递 */ 三、函数的定义 1 格式: 类型标识符 函数名([形式参数]) { 数据说明部分; 可执行语句部分; 函数体 返回语句; } void dum( ) { } 说明:在编写程序的开始阶段,在将来准备扩充功能的地方写上一个空函数,先占一个位置,以后用一个编好的函数来代替它。 (3)在函数体内形参可以被引用,可以输入、输 出、被赋予新值或参加运算。 int ab1(int x,int y) { int sum; printf(“x is %d\n”,x); /*形参可输出*/ scanf(“%d”,y); /*形参可输入*/ sum=x+y; /*可参与运算*/ printf(“x+y=\n”,sum ); x*=2; /*可赋于新值*/ y*=2; printf(“2x+2y=%d”,x+y); } (4) 程序进行编译时,并不为形式参数分配存储单元, 只有它所在的函数被调用时,给形参分配存储单 元,并将实参的值传递给形参;函数调用结束其所 占空间被释放 /*例5 c5.c*/ 3) 实际参数(实参) 在调用函数时,函数名后圆括弧中的表达式称为实 际参数。(实参可以是有确定值的变量、常量或表达 式且与形参类型应一致) 四、 函数的返回 函数执行的最后一个操作是返回。返回的意义是: 1)使流程返回到主调函数, 宣告函数的一次执行结束。在调用期间分配的形参单元撤销。 2)送函数值到调用表达式中。但这一点并非必要。 #include stdio.h void pt( ) { char dm[17]={“I am a student”}; puts(dm); } /*函数体右侧花括弧起到返回的作用*/ main() { pt( ); printf(“\n”); } 五 return语句 作用:1) 返回一个表达式的值到主调函数处并使函数流程返回。 2)仅将流程转回到调用函数,此时return语句后不带表达式。(return语句可以省略) 注意:在一个函数中,允许有一个或多个return语 句。只要执行其中一个return语句时流程即返回
文档评论(0)