C语言程序设计2第9章函数与变量.ppt
《C语言程序设计2第9章函数与变量.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计2第9章函数与变量.ppt(35页珍藏版)》请在三一办公上搜索。
1、第9章 函数与变量,9.1 函数定义9.2 函数定义与使用9.3 变量的作用域9.4 变量的存储类型9.5 内部函数和外部函数,退出,9.1 函数定义,C源程序是由函数组成的。虽然在前面的示例程序中都只有一个主函数main(),但在实际编程中往往有多个函数组成。函数是C源程序最基本的模块,相当于其它高级语言的子程序。C语言提供了极为丰富的库函数,库函数相当于标准程序。编写程序就是编写函数以及使用库函数。各个函数之间为模块化关系。可从不同的角度对函数分类。,9.1.1 根据来源定义 从定义的角度把函数分为库函数和用户定义函数。1 库函数 库函数由系统提供,无须用户定义,也不必在程序中作类型说明,
2、但必须在程序最前面使用包含有该函数原型的头文件。库函数如:printf、scanf、getchar、putchar、gets、puts。2 用户定义函数 由用户自己编写的函数。它不仅要在程序中定义,而且必须在调用它的函数模块中进行类型说明。,9.1.2 根据返回情况定义 把函数分为有返回值函数和无返回值函数两种。1 有返回值函数 函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。用户定义的有返回值的函数,必须在函数定义和函数说明中明确返回值的类型。2 无返回值函数 执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。由于函数无返回值,在定义时可指
3、定它为“空类型”,空类型的说明符为“void”。,9.1.3 根据参数传递定义 从主调函数和被调函数之间数据传送的角度可分为无参函数和有参函数两种。1 无参函数 调用函数与被调函数之间没有数据传送。则此类函数在定义、说明及调用中均不带参数。,2 有参函数 调用函数与被调函数之间有数据传送。则此类函数在定义、说明及调用中均带参数。函数是C语言的核心,而所有的函数在定义时是平等关系(包括主函数main在内),所谓平等是指:在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。这与其它语言的子程序关系十分不同。这叫做“函数定义的外部性”。函数之间允许调用,也允许嵌套调用。甚至可以自己调用自己(
4、称为递归调用)。但是,对主函数main函数而言,可以调用其它函数,而不能被其它函数调用。程序的执行总是从main函数开始,完成对其它函数调用后再返回到main函数,最后由main函数结束整个程序。一个源程序必须有、也只能有一个主函数main。习惯上把调用者称为主调函数。被调用者称为被调函数。,9.2 函数定义与使用,9.2.1 无参函数定义的一般形式 无参函数定义通常采用如下形式:类型说明符 函数名()函数内部变量类型说明;语句序列;类型说明符和函数名称为函数头。类型说明符指明了本函数的类型,就是函数返回值的类型。函数名是由用户定义的标识符。中的内容称为函数体,这是函数的核心。函数体中的类型说
5、明用来说明函数体内部所用变量的类型。若不要求无参函数有返回值,则函数类型符可以写为void。【例9-1】(见课本),9.2.2 有参函数定义的一般形式 有参函数定义通常采用如下形式:类型说明符 函数名(形式参数列表)函数内部变量类型说明;语句序列;1 函数类型 就是函数返回值的类型。系统默认为int,故对int或char型可以不定义类型。对于不需要返回值的类型,则应定义为空函数,即函数类型为:void。2 函数名 函数的标识,即给不同的函数起不同的名字。函数名应符合C语言对标识符的规定。,3 形式参数列表 形式参数列表逐一列出形式参数的类型与名称,之间用逗号隔开。如:int a,double
6、x 形式参数的类型决定函数可以接受的数据类型。形式参数实际上是一种替身,代替实际参数在函数中先占位置。它有点像代数式中的变量xy。4 函数体 是函数中最独特的部分,实际上它决定了函数的功能。函数体可以是空的,此函数就是空函数,什么也不做。5 类型说明 形式参数既然作为变量应有类型说明。,6 函数的返回 返回就是函数执行结束,返回到调用它的函数。有返回值则代回,也可以没有返回值。通常用return语句来实现返回。return语句可以包含表达式。此时,则返回表达式的值。若return语句不包含表达式,则返回一个不确定的值。为避免可能引起的问题,此时应指定函数的类型为void。函数可以有多个出口,即
7、可以有多个return语句。但是,每 个return语句中的表达式的类型应相同。7 函数定义的位置无关性 函数的定义可以放在任意位置,既可放在主函数main之前,也可放在main之后。总之,函数主要由三要素组成:输入、过程及输出。【例9-2】(见课本)【例9-3】(见课本),9.2.3 函数声明 对本函数要定义的函数作一个声明,以便编译系统对函数进行检查。主要声明函数的输入信息:函数名,函数类型,形式参数的类型、个数及次序。格式如下:函数类型 函数名(形式参数列表);注意格式末尾的分号不可缺少。在实际使用中,最好在文件程序对本程序所使用的函数逐一、全部、集中声明。在以下几种情况下,可以不做声明
8、:函数的返回值是整形或字符型时;被调用函数的定义位置在主函数位置之前时;在所有函数定义之前、在文件的开头已经说明了时;【例9-4】(见课本),9.2.4 函数调用 调用函数就是使用已经定义了的函数,通常通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。函数调用 的一般形式为:函数名(实际参数列表)实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实际参数之间用逗号分隔。对无参函数调用时则无实际参数表。其格式为:函数名 在C语言中,可以用多种方式调用函数。以下简述之。,1 函数表达式 函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数
9、是有返回值的。例如:z=max(x,y)这是一个赋值表达式,把max的返回值赋予变量z。2 函数语句 把函数作为一个语句,即一般形式加上分号。例如:printf(%D,a);scanf(%d,都是以函数语句的方式调用函数。,3 函数实际参数 函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实际参数进行传送,因此要求该函数必须是有返回值的。例如:printf(%d,max(x,y);即是把max调用的返回值又作为printf函数的实际参数来使用的。【例9-5】(见课本),9.2.5 函数调用的类型 函数调用的方式主要有以下几种。这些调用方式极大地增强了函数的作用。其功能强大,
10、但使用中也应细心,否则造成的问题也严重。1 传值调用 调用时,把实际参数的值传递给形式参数,再执行函数。可以有返回值,也可以没有返回值而只是执行某种操作。,实际参数是调用函数中的变量,形式参数是被调用函数中的变量。在存储方面有以下特点:形式参数与实际参数各占独立的存储空间;形式参数的存储空间是调用时才分配的;调用结束时,撤消分配给形式参数的临时存储区;实际参数可以是常量、变量、表达式、函数等,无论实际参数是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形式参数;实际参数和形式参数的数量、类型、顺序应严格一致;函数调用中发生的数据传送是单向的。即只能把实际参数的值传送
11、给形式参数,而不能把形式参数的值反向地传送给实际参数。因此在函数调用过程中,形式参数的值发生改变,而实际参数中的值不会变化;【例9-6】(见课本),2 嵌套调用 嵌套调用就是在被调用的函数中再调用其它函数。【例9-7】(见课本)3 递归调用 直接或间接地调用函数本身。此时应特别注意递归的结束条件,仔细推敲它是否真正有效,必要时可人为设置递归终止条件(如控制调用次数)。【例9-8】(见课本),9.3 变量的作用域,变量有效的范围称为变量的作用域。语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。9.3.1 局部变量 局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 函数 变量
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6504032.html