- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 函数
§7.1函数
一、函数及其定义
1.函数定义的一般形式(p114)
返回值类型 函数名 ( 形式参数表 )
形式参数类型描述;
{ (函数内部的)变量定义与有关说明语句部分
函数的可执行语句序列
}
[函数头]、[函数体]
[例7-1] 求两个整数的最大值的函数定义。(或p115)
int max ( x,y ) /* 定义了有两个形式参数x,y且返回int值的函数max */
int x, y; /* 说明了形参x,y均为int型 */
{ int z; /* 定义了函数内部使用的变量z */
z = x>y ? x:y; /* 将x,y中较大值送入z */
return (z);/* 将z做为函数返回值,并使函数返回到被调程序(父程序) */
}
2.关于函数返回值类型
① 允许C基本数据类型和任何有意义的用户自定义类型。
② 如果省略返回值类型则隐含返回int类型。
③ 没有返回值的函数。
3.关于形式参数及形参说明
函数参数是为在函数和父程序间传递数据而设置的。各参数在被父程序调用时才从父程序处获得真正的值,因而在定义函数时参数是“形式上”的值称形式参数,简称形参。函数被调用时形参从父程序处获得的真实值称实际参数,简称实参。实参传递给形参的过程称实形结合,加上函数处理结果返回到父程序的过程统称函数的参数传递,函数参数传递是函数技术中的重要内容。
① 形参之间以“,”分隔。
② 形参是局部性变量,只在函数内有效。
③ 两种形参说明效果相同。
④无参函数的()不能省略,以示位于()前面的标识符是函数名。
char GetCHAR()
{ int k;
k =getchar();
if( k>=’a’ && k<=’z’) return k-32;
else return 0;
}
4.关于函数体与函数返回。
① 函数体是实现函数功能的程序片断,函数体的设计与通常的编程在编程思想和技术上没有任何差别。
② 返回语句return使函数退出运行返回到父程序继续执行,同时将函数值带回父程序。return语句共有4种形式。
return(表达式);
return 表达式;
return;
无return语句。
③ return语句可以安排在函数体任何位置,也可安排多条return语句。
5.关于多个函数的位置关系:并列关系而非嵌套关系。
6.关于主函数main()
① 程序中有且仅有一个main()函数,程序从main()函数开始执行。
② main() 函数也有形参,参数由操作系统给出,即“命令行参数”。
二、函数调用
1.函数调用的一般形式(p115)
函数名(实参表)
2.函数调用与函数执行过程(p116)
为函数的形参分配内存空间;
计算实参表达式的值,并将实参表达式的值赋给对应的形参;
为函数的局部变量分配内存空间;
执行函数体内的语句片段;
函数体执行完毕或执行了函数体内的return语句(若return语句带表达式,则计算出该表达式的值,并以此值作为函数的返回值)后,释放为这次函数调用分配的全部内存空间;
将函数及返回值返回到父程序的函数调用处,继续执行父程序。
[例7-2] 如下给出了程序中调用max函数的全过程说明。
#include <stdio.h>
float max( float x, float y )
{ float z;
z = x>y ? x : y;
return z;
}
main()
{ float a=19.8, b=-98.8, c;
c = max( a, b );
printf( "MAX(a,b)=%f\n", c );
}
三、函数的参数传递方式
1.传值方式
[例7-3] 返回阶乘的函数及其调用,函数调用时参数采用传值方式。
#include <stdio.h>
float fac( int n )
{ int f= 1.0;
while ( n >= 1 ) { f = f * n; --n; }
return ( f );
}
main() {
int k = 6;
printf( "%8.1f\n", fac( k ) );
}
2.传地址方式
[例7-4] 返回阶乘的函数及其调用,函数调用时采用传地址方式。
#include <stdio.h>
float fac( int *n )
{ int f= 1.0;
while ( *n >= 1 ) { f = f * (*n); --(*n); }
return ( f );
}
main() {
int k = 6;
您可能关注的文档
- 记承天诗夜游习题练.doc
- 记摄影师朱一飞.doc
- 记者体验黑车游北大:严抓下玩起躲猫猫(图).doc
- 讲义 14.应有格物致知精神.doc
- 讲学稿清朝对边疆的管辖.doc
- 讲师(思政)-科信学院-陈涛.doc
- 讲师-信电学院-吴迪.doc
- 讲师-医学院-刘凤丽.doc
- 讲师-土木学院-何丽丽.doc
- 讲师-建筑学院-刘文玉.doc
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版初级练习卷有答案与.docx
- (附答案)川农12月《中药化学》作业考核-.docx
- (附答案)川农12月《园林植物保护学(本科)》作业考核-.docx
- (附答案)川农12月《有机化学(专科)》作业考核-.docx
- (附答案)川农12月《植物保护学(本科)》作业考核-.docx
- (附答案)东师《教育心理学》在线作业2-1(1).docx
- (附答案)川农12月《药剂学》作业考核-.docx
- (附答案)川农12月《配方饲料制造工艺与技术(专科)》作业考核-.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版基础知识题库带解析.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》基础知识模拟押题卷.docx
文档评论(0)