第十一章 函数.ppt
上传人:sy****28 上传时间:2024-09-14 格式:PPT 页数:77 大小:5.1MB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

第十一章 函数.ppt

第十一章函数.ppt

预览

免费试读已结束,剩余 67 页请下载文档后查看

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十一章函数函数概述函数的定义函数的调用函数的声明参数传递函数与数组函数与指针变量的作用域、存储类型和生存期main函数中的参数综合程序举例C语言的程序由函数组成,函数是C语言程序的基本单位。C语言程序可以只包含一个main函数;但如果要实现的功能比较复杂,从程序的模块化实现、代码重用性等因素考虑,应当要定义并实现一些自定义函数,也就是说一个C语言程序也可以包含一个main函数和若干个其它函数。使用函数的几个原因:11.1函数概述11.2.1函数的定义11.2.1函数的定义11.2.1函数的定义11.2.2函数的返回值11.2.2函数的返回值11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.1函数调用时的语法要求11.3.2函数的嵌套调用函数的递归调用若函数的某些语句又直接或间接的调用了函数本身,这种嵌套调用就称之为递归调用。递归调用又可分为直接递归和间接递归,下面先介绍直接递归:func1(…)func2(…){{func2()func1()//再调用func1函数}}11.3.2函数的嵌套调用递归调用过程分为两个阶段:递推阶段:将原问题不断地分解为新的子问题,逐渐从未知的向已知的方向推测,最终达到已知的条件,即递归结束条件,这时递推阶段结束。回溯阶段:从已知条件出发,按照“递推”的逆过程,逐一求值回归,最终到达“递推”的开始处,结束回归阶段,完成递归调用。11.3.2函数的嵌套调用11.3.2函数的嵌套调用11.3.2函数的嵌套调用11.3.2函数的嵌套调用11.3.2函数的嵌套调用11.3.2函数的嵌套调用11.4函数的声明11.4.1函数声明的形式11.4.1函数声明的形式11.4.2函数声明的位置11.5参数传递11.5.1值传递方式11.5.1值传递方式11.5.1值传递方式11.5.2地址传递方式11.5.2地址值传递方式11.5.2地址传递方式综上所述,值传递中实参与形参有各自的存储单元,而地址传递中实参和形参其实指向了同一被访问的存储单元,对形参的操作相应的就改变了实参,此时参数传递是双向的,可以传回运算结果。根据设计需要,灵活选择参数传递方式。由于前面的return语句仅能返回一个数据,若需同时返回多个数据时可采用地址传递的方式加以解决。数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式:一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。11.6函数与数组11.6函数与数组11.6函数与数组11.6函数与数组11.7.1指针作为函数参数变量名接着执行if语句,由于a<b,因此执行swap函数。注意实参gP1和gP2是指针变量,在函数调用时,将实参变量的值传递给形参变量。采取的依然是“值传递”方式。因此虚实结合后形参p1的值为&a,p2的值为&b。这时p1和gP1指向变量a,p2和gP2指向变量b。见图11-9指针变量内存状况。函数调用结束后,p1和p2不复存在如图11-11指针变量内存状况。11.7.2指针型函数与函数指针11.7.2指针型函数与函数指针11.7.2指针型函数11.8.1变量的作用域11.8.1变量的作用域11.8.1变量的作用域11.8.1变量的作用域11.8.1变量的作用域11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.8.2存储类型和生存期11.9内联函数与外部函数11.9main函数中的参数11.9main函数中的参数11.10综合程序举例本章小结