1 / 13

第五讲 函数

第五讲 函数. 参考书 《C 程序设计 》 第七章. 本讲主要内容. 函数的定义 函数的调用 函数间的数据传递 变量的存储类型 变量的作用范围 内部函数和外部函数. 若无参数,写 void 。. 是被初始化的内部变量, 寿命和可见性仅限于函 数内部。. 若不说明类型,一律自 动按整型处理。. 函数的定义. 语法形式 类型标识符 函数名(形式参数表) 形式参数说明 { 说明部分 语句 }. 函数的调用. 调用前先说明函数原型: 在调用函数的说明部分按如下形式说明:

Download Presentation

第五讲 函数

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五讲 函数 参考书《C程序设计》第七章

  2. 本讲主要内容 • 函数的定义 • 函数的调用 • 函数间的数据传递 • 变量的存储类型 • 变量的作用范围 • 内部函数和外部函数

  3. 若无参数,写void。 是被初始化的内部变量, 寿命和可见性仅限于函 数内部。 若不说明类型,一律自 动按整型处理。 函数的定义 • 语法形式 类型标识符 函数名(形式参数表) 形式参数说明 { 说明部分 语句 }

  4. 函数的调用 • 调用前先说明函数原型: • 在调用函数的说明部分按如下形式说明: 类型标识符 被调用函数名 (含类型说明的形参表) • 调用形式 函数名(实参) • 嵌套调用 • C语言不允许嵌套定义,但可以嵌套调用 • 递归调用 • 函数直接或间接调用自身 例 1 例 2 例 3

  5. 函数间的数据传递——三种传递方式 • 返回值 • 参数 • 全局变量

  6. 内部函数和外部函数 • 内部函数 • 只能被本文件中其它函数所调用,定义形式:static 类型标识符 函数名(形参表) • 外部函数 • 可以为其它文件调用,定义形式:extern 类型标识符 函数名(形参表)extern缺省时隐含为外部函数 • 调用文件中也要用extern说明 • 举例 • P139 例7.22

  7. 作 业 • 复习:第七章 • P141 7.8, 7.11, 7.15, 7.17 • 预习:第九章

  8. 函数的返回值 • 通过 return 语句返回。 • return 语句只能把一个返值传递给调用函数。 • 返回值的类型为定义的函数类型,若 return 语句中表达式类型与函数类型不一致,则转换为函数类型。 • 返回值可以是数值,也可以是地址。当返值是地址时,应该用指针接受它。 • 无返回值的函数,定义为 void 类型。

  9. 函数间的参数传递 • 在函数被调用时才分配形参的存储单元。 • 实参可以是常量、变量或表达式。 • 实参类型必须与形参相符。 • 传递时是传递参数值,即单向传递。 • 使用地址作为参数,可以返回函数处理结果。 • 数组作为参数时的情况。 • 数组元素作实参,与单个变量一样。 • 数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地址。 例 4

  10. 使用全局变量传递数据 在所有函数之外说明的变量是全局变量,它在所有函数中都是可见的。 利用全局变量的这个特性,可以在函数间传递数据 注:变量的类型和作用范围

  11. 变量的存储类型 • auto(自动)型 • 存放在堆栈区域中。属于一时性存储,其存储空间可以被若干变量多次覆盖使用。 • register(寄存器)型 (一般情况下不必这样指定) • 存放在CPU的通用寄存器中 • long,double,float不能设为register型,因为超过寄存器长度 • static(静态)型 • 存放在一般内存区域中

  12. 变量的作用范围 例 5 • 局部变量 • 在函数内部说明的变量 • 可以是: auto型、register型 —只能是局部变量static型 —全局寿命、局部可见性 • 缺省为auto型 • 全局变量 • 在所有函数之前说明的变量 • 可以是: static型—只允许在本程序文件中引用 缺省型—可以被其它文件中的函数引用 但要在引用函数中用 extern 说明. 例 6

  13. 不同类型变量的初始化 • auto和register变量若被初始化,则每当进入该程序块后,都执行该变量的初始化赋值功能。 • 没有进行初始化的auto和register变量,其初值不定,不能直接在程序中使用。 • static和全局变量若不初始化,自动赋0。 • static和全局变量初始化时必须用常量为其赋初值,auto和register变量初始化时可以用常量或变量赋初值。 • static型局部变量的初始化仅执行一次 • extern型的变量不能进行初始化 例 7

More Related