C语言_函数.ppt
《C语言_函数.ppt》由会员分享,可在线阅读,更多相关《C语言_函数.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言程序设计语言程序设计函数函数周闻钧朱宏明本讲内容本讲内容n基本函数概念n函数的递归n局部变量和全局变量n变量的存储类别函数的分类函数的分类n nmainmain函数是系统定义的。所有函数都是平行的,即在定义函数时是互函数是系统定义的。所有函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一函数,即函数不能嵌套定义(这相独立的,一个函数并不从属于另一函数,即函数不能嵌套定义(这是和是和PASCALPASCAL不同的),但可以互相调用,但不能调用不同的),但可以互相调用,但不能调用mainmain函数函数n n从用户使用的角度看,函数有两种:从用户使用的角度看,函数有两种:n
2、 n标准函数标准函数,即库函数。这是由系统提供的,用户不必自己定义这,即库函数。这是由系统提供的,用户不必自己定义这些函数,可以直接使用它们。应该说明,每个系统提供的库函数些函数,可以直接使用它们。应该说明,每个系统提供的库函数的数量和功能不同,当然有一些基本的函数是共同的的数量和功能不同,当然有一些基本的函数是共同的n n用户自己定义的函数用户自己定义的函数,以解决用户的专门需要,以解决用户的专门需要n n从函数的形式看,函数分两类从函数的形式看,函数分两类n n无参函数无参函数。在调用无参函数时,主调函数并不将数据传送给被调。在调用无参函数时,主调函数并不将数据传送给被调用函数,一般用来执
3、行指定的一组操作。无参函数可以带回或不用函数,一般用来执行指定的一组操作。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多带回函数值,但一般以不带回函数值的居多n n有参函数有参函数。在调用函数时,在主调函数和被调用函数之间有参数。在调用函数时,在主调函数和被调用函数之间有参数传递,也就是说,主调函数可以将数据传给被调用函数使用,被传递,也就是说,主调函数可以将数据传给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。调用函数中的数据也可以带回来供主调函数使用。编写和使用一个简单的函数编写和使用一个简单的函数编写和使用一个简单的函数编写和使用一个简单的函数n nStarb
4、ar标识符在不同的位置被使用了3次:n n函数原型(函数原型(function prototypefunction prototype):):告知编译器告知编译器starbarstarbar()()的函数类型的函数类型n n函数调用(函数调用(function callfunction call):):导致该函数的执行导致该函数的执行n n函数定义(函数定义(function definitionfunction definition):):确切的指定了确切的指定了该函数的具体功能该函数的具体功能编写和使用一个简单的函数编写和使用一个简单的函数n n函数和变量一样有多种类型。任何程序在使用函数
5、之前都需要声明该函数的类型n n下面是Ansi C风格的原型 void starbar(void);n n()表明starbar是一个函数名。n n第一个第一个voidvoid指的是函数返回值类型,它的意思指的是函数返回值类型,它的意思是该函数没有返回值是该函数没有返回值n n第二个第二个voidvoid(位于圆括号内)表明该函数不接位于圆括号内)表明该函数不接受任何参数受任何参数n n分号表示该语句是进行函数的声明而不是定义分号表示该语句是进行函数的声明而不是定义编写和使用一个简单的函数编写和使用一个简单的函数n n程序通过在main()中使用函数名后跟圆括号和分号的格式调用函数starba
6、r()n n程序把starbar()和main()包含在同一个文件中,也可以把它们放在不同的两个文件中,这种方式下必须在文件种加入#define或者#include指令编写和使用一个简单的函数编写和使用一个简单的函数带参数的函数带参数的函数定义带参数的函数(形式参数)定义带参数的函数(形式参数)n n函数定义以下面的ANSI C函数头开始n n n nANSI C也接受ANSI之前的形式,但将其视为废弃不用的形式调用带参数的函数(实际参数)调用带参数的函数(实际参数)n n使用实际参数对形式参数赋值n n实际参数可以是常量、变量或一个复杂的表达式调用带参数的函数(实际参数)调用带参数的函数(实
7、际参数)n n实际参数传递给形式参数是单向值传递形式参数和实际参数形式参数和实际参数n n形式参数和实际参数形式参数和实际参数n n在调用函数时,大多数情况下,主调函数和被调用函数之间有数在调用函数时,大多数情况下,主调函数和被调用函数之间有数据传递关系据传递关系n n在定义函数时函数名后面括弧中的变量名称为形参在定义函数时函数名后面括弧中的变量名称为形参n nintint funcfunc(intint x,x,intint y)y)n n n n在调用函数时,函数名后面括弧中的表达式称为实际参数(简称在调用函数时,函数名后面括弧中的表达式称为实际参数(简称实参)实参)intint x=1,
8、y=0;x=1,y=0;funcfunc(x,y);(x,y);funcfunc(x+y,y-x);(x+y,y-x);形式参数和实际参数形式参数和实际参数n n关于形参和实参的说明n n在定义函数中指定的形参变量,在未出现函数调用时,在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用它们并不占内存中的存储单元。只有在发生函数调用时函数时函数maxmax中的形参才被分配内存单元。在调用结束后,中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放形参所占的内存单元也被释放n n实参可以是常量、变量或表达式,但要求它们有确定实参可以是常量、
9、变量或表达式,但要求它们有确定的值。在调用时将实参的值赋给形参变量(如果形参的值。在调用时将实参的值赋给形参变量(如果形参是数组名,则传递的是数组首地址,而不是变量的值)是数组名,则传递的是数组首地址,而不是变量的值)n n在被定义的函数中,必须指定形参的类型在被定义的函数中,必须指定形参的类型n n实参与形参的类型应一致。如果实参为整型,形参为实参与形参的类型应一致。如果实参为整型,形参为实型,或者相反,则发生实型,或者相反,则发生“类型不匹配类型不匹配”的错误。字的错误。字符型与整型可以互相通用符型与整型可以互相通用使用使用return从函数中返回一个值从函数中返回一个值使用使用retur
10、n从函数中返回一个值从函数中返回一个值n n关键字return指明了其后的表达式的数值即是该函数的返回值。n n因为min的类型是int,所以函数imin()的类型也是intn n返回值不仅可以被赋给一个变量,也可以被用作表达式的一部分使用使用return从函数中返回一个值从函数中返回一个值n nReturn语句的另一个作用是终止程序的执行,把程序的控制权返回给调用函数的下一个语句函数的类型函数的类型n n函数应该进行类型申明,同时其类型应和返回值类型相同n n早期的c语言中,如果函数没有进行类型申明,则该函数具有默认的函数类型int。C99标准不再支持函数的int类型的默认设置本讲内容本讲内
11、容n基本函数概念n函数的递归n局部变量和全局变量n变量的存储类别函数的递归函数的递归n n一个函数调用其本身,这种调用过程被称为递归递归的基本原理递归的基本原理n n每一级的函数调用都有自己的变量每一级的函数调用都有自己的变量n n每一次函数调用都会有一次返回每一次函数调用都会有一次返回n n递归函数中,位于递归调用前的语句和各级被调递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序用函数具有相同的执行顺序n n递归函数中,位于递归调用后的语句的执行顺序递归函数中,位于递归调用后的语句的执行顺序和各个被调函数的顺序相反和各个被调函数的顺序相反n n虽然每一级递归都有自己的变量,
12、但是函数代码虽然每一级递归都有自己的变量,但是函数代码并不会得到重复并不会得到重复n n递归函数中必须包含可以终止递归调用的语句递归函数中必须包含可以终止递归调用的语句递归的基本原理递归的基本原理尾递归尾递归n n递归调用出现在函数的尾部,相当于一条循环语句尾递归尾递归n n递归和循环的比较n n选择循环更好一些选择循环更好一些n n每次递归调用都用自己的变量集合,需要占用每次递归调用都用自己的变量集合,需要占用较多的内存较多的内存n n每次递归调用需要把新的变量机和存储到堆栈每次递归调用需要把新的变量机和存储到堆栈中中n n递归的执行速度较慢递归的执行速度较慢递归和反向计算递归和反向计算递归
13、的优缺点递归的优缺点n n优点:为某些编程问题提供了最简单的解决办法n n缺点:递归算法会很快的耗尽计算机的内存资源,难于维护和阅读本讲内容本讲内容n基本函数概念n函数的递归n局部变量和全局变量n变量的存储类别局部变量和全局变量局部变量和全局变量n n局部变量局部变量n n在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。这称为量的。这称为“局部变量局部变量”n nf float fl(loa
14、t fl(intint a)a)intint b,c;b,c;Char f2(int x,Char f2(int x,intint y)y)intint i i,j;,j;void mvoid main()ain()intint m,n;m,n;a,b,c有效有效x,y,i,j有效有效m,n有效有效局部变量和全局变量局部变量和全局变量n n局部变量局部变量(续)续)n n主函数主函数mainmain中定义的变量(中定义的变量(m m,n n)也只在主函数中有效,而不因也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效,这是和为在主函数中定义而在整个文件或程序中有效,这是和PAS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数
限制150内