存储类和预处理程序.doc_第1页
存储类和预处理程序.doc_第2页
存储类和预处理程序.doc_第3页
存储类和预处理程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 函数、存储类和预处理程序教学目的和要求:掌握自定义函数的定义及使用方法,掌握函授的递归算法,掌握变量的作用域和生命期。教学重点:自定义函数的定义及调用课时安排:4+4(上机)教学内容:6.1 定义函数一、 库函数二、 用户自定义函数1、传统格式类型标志符 函数名(形式参数列表)形式参数类型说明:函数体2、现代格式类型标志符 函数名(类型标志符 形式参数,类型标志符 形式参数,)函数体说明:函数名称:符合C语言对标志符的规定。函数形式参数:一个函数既可以有多个参数也可以无参数,函数参数之间用逗号隔开,并且要说明其数据类型。函数体:用花括号括起的语句组成,它实现函数的功能。函数值:一个函数在运行后通常都有一个值,被称为函数值或函数返回值,函数值的类型由定义函数时给出的类型标志符指定,若空缺,系统默认函数值是整型,用户可通过函数体中的RETURN语句给函数赋一个值,否则系统将随机赋给函数一个值。RETURN语句的作用:1、 结束当前被调用的函数的执行,返回主调用函数。2、 赋给当前被调用函数一个值RETURN语句的三种形式:Return (e) e为表达式 函数值是计算后得到的值。Return e e为表达式 函数值是计算后得到的值。Return例1、 int max (x,y) int x,y;int max (int x, int y)注意:使用后者,必须对每个参数分别说明类型,int z;并用逗号分隔。 if (x. y) z=x;elsez=y;return (z); 6.2 函数调用一、函数调用的形式函数名称 (实际参数表);函数名称 被调函数的标志。实际参数 主调函数利用实际函数将本函数的信息传递给被调函数的形式参数,从而使被调用函数获得被调用的函数得到主调函数的相应数据,调用时所传递的实际参数的个数、类型以及排列顺序必须与函数的形式参数一一对应。例2、 int max (x,y) int x,y;Iint z; if (x. y) z = x;elsez = y;return (z); main ( )int a,b,maxnumberscanf (“%d%d”,&a,&b);maxnumber = max (a,b);printf (“max number of %d and %d is %d”,a,b,maxnumber);二、函数调用的位置1、 函数表达式 maxnumber = max (a, b) 2、 函数语句3、 函数参数 m = max (max (a,b),c);二、 函数调用的条件1、 调用的函数必须是已被定义的函数2、 如使用库函数,应将有关的库函数信息包含在程序中。如 # include “stdio.h”3、 如调用的是用户自定义的函数,一般应该在主调用函数中对被调用函数的数据类型进行说明,以便通知C语言编译系统被调用函数的函数值类型等信息,说明方式如下:类型标志符 函数名 (类型标志符 形式参数,类型标志符 形式参数,)函数说明的类型必须与函数定义时的类型一致。函数定义的首部没有分号。函数说明语句是一条语句,有分号。若1、 被调用的函数的定义位置在主调函数之前,可以不必说明。2、 函数的返回值是整型或字符型,可不必说明。6.3 函数参数和函数的值一、 形式参数和实际参数1、 在定义函数中指定的形参变量,在未出现函数调用时,它们不占内存中的存储单元,只有再发生函数调用时函数中的形参才被分配内存单元,在调用结束后,形参所占的内存单元也被释放,2、 实参可以是常量、变量或表达式,如max (3 , a+b ); 但要求它们有确定的值在调用时将实参的值赋给形参变量,3、 在被定义的函数中,必须指定形参的类型4、 实参与形参的类型应一致。(字符型与整型可以互相通用。5、 实参变量对形参变量的数据传递是“值传递”,即单向传递。A 2 B 3X 2 Y 36.4 函数之间的数据传递l 使用return (e )的方式l 参数传递l 全局变量传递方式一、参数传递1、按值调用 只能由实际参数传递给形式参数,单向传递2、引用调用把实际参数的地址传递给被调用函数的形式参数二、 变量传递1、局部变量是一个在一个函数内部被定义的变量,只在本函数范围内有效。,在不同的函数中可以定义相同的局部变量,它们各自代表不同的对象,互相并不干扰。2、全局变量又称外部变量是在函数体外定义的。一般在程序的开头,其作用域为从定义变量的位置开始,一直到整个程序的结束为止。注意:如果在同一程序中,外部变量与局部变量同名,则在局部变量的作用域内,外部变量被屏蔽,不起作用。6. 5 动态变量与静态变量从存储的角度,变量可以分为l 存储在内存动态存储区中的变量,包括自动变量和形式参数。l 存储在CPU寄存器中的寄存器变量。l 存储在内存静态存储区中的变量,包括外部变量和静态局部变量。其中前两种被合称为动态变量,第三种被称为静态变量。一、动态变量是在程序运行时的某一刻被动态建立,又在某一刻被动态撤消的一种变量,在程序运行过程中被动态的建立和撤消,他们存在于程序的局部,也只在局部可用。1、 自动变量 由系统分配内存单元,当函数执行完毕,这些单元被撤消,在函数体中说明的变量,如不特别声明会被默认为自动变量。格式: auto type namelist;2、 寄存器变量与自动变量性质相同,寄存器变量建立时被存储在CPU的一个寄存器内,CPU的寄存器具有高速存储的特点,使用寄存器变量能够提高程序执行速度。二、静态变量在程序的开始执行时被建立,直到该程序结束都是存在的。格式:static int a,b静态变量只能被初始化一次,若静态变量使用前没有被初始化赋值,则系统设置静态变量的值为0,动态变量没有初始化,则它的值是不确定的随机值。6.6 类型说明符 void类型说明符,表示为空类型。其作用为:1、 说明函数参数为空l 直接将函数形式参数列表为空。l 使用关键字void定义函数的形式参数2、 定义函数无函数值一个函数可以没有函数值,若无返回值,则函数类型应定义为void类型。如果一个函数的类型不明确指定为void,则不管有无 return语句,大多数系统会分配给函数一个值。6.7 函数的递归一个被调用函数的函数体中又调用了另一个函数被称为函数的嵌套。Main ( )int I ;scanf ( “%d”,&I):printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论