C语言程序设计 清华大学郑莉安颖莲 第五讲函数 参考书《C程序设计》第七章 Page 1
C语言程序设计 清华大学 郑莉 安颖莲 Page 1 第五讲 函数 参考书《C程序设计》第七章
C语言程序设计 清华大学郑莉安颖莲 本讲主要内容 函数的定义 函数的调用 函数间的数据传递 变量的存储类型 ·变量的作用范围 内部函数和外部函数 Page 2
C语言程序设计 清华大学 郑莉 安颖莲 Page 2 本讲主要内容 • 函数的定义 • 函数的调用 • 函数间的数据传递 • 变量的存储类型 • 变量的作用范围 • 内部函数和外部函数
C语言程序设计 清华大学郑莉安颖莲 函数的义 语法形式 类型标识符 函数名(形式参数表) 若无参数,写void。 形式参数说明 是被初始化的内部变量, {说明部分 寿命和可见性仅限于函 语句 数内部。 若不说明类型,一律自 动按整型处理。 Page 3
C语言程序设计 清华大学 郑莉 安颖莲 Page 3 函数的定义 • 语法形式 类型标识符 函数名(形式参数表) 形式参数说明 { 说明部分 语句 } 若无参数,写void。 是被初始化的内部变量, 寿命和可见性仅限于函 数内部。 若不说明类型,一律自 动按整型处理
C语言程序设计 清华大学 郑莉安颖莲 函数的调用 ·调用前先说明函数原型: -在调用函数的说明部分按如下形式说明: 类型标识符被调用函数名(含类型说明的形参表) 调用形式 函数名(实参) 例1 嵌套调用 C语言不允许嵌套定义,但可以嵌套调用 。 递归调用 一函数直接或间接调用自身 例2 例3 Page 4
C语言程序设计 清华大学 郑莉 安颖莲 Page 4 函数的调用 • 调用前先说明函数原型: - 在调用函数的说明部分按如下形式说明: 类型标识符 被调用函数名 (含类型说明的形参表) • 调用形式 函数名(实参) • 嵌套调用 - C语言不允许嵌套定义,但可以嵌套调用 • 递归调用 - 函数直接或间接调用自身 例 1 例 2 例 3
C语言程序设计 清华大学郑莉安颖莲 丞数间的数据传递 三种传递方式 返回值 参数 全局变量 Page 14
C语言程序设计 清华大学 郑莉 安颖莲 Page 14 函数间的数据传递 ——三种传递方式 • 返回值 • 参数 • 全局变量
C语言程序设计 清华大学 郑莉安颖莲 内部函数和外部数 ·内部函数 -只能被本文件中其它函数所调用,定义形式: static类型标识符函数名(形参表) ·外部函数 可以为其它文件调用,定义形式: extern类型标识符函数名(形参表) extern缺省时隐含为外部函数 -调用文件中也要用extern说明 举例 P139例7.22 Page 15
C语言程序设计 清华大学 郑莉 安颖莲 Page 15 内部函数和外部函数 • 内部函数 - 只能被本文件中其它函数所调用,定义形式: static 类型标识符 函数名(形参表) • 外部函数 - 可以为其它文件调用,定义形式: extern 类型标识符 函数名(形参表) extern缺省时隐含为外部函数 - 调用文件中也要用extern说明 • 举例 - P139 例7.22
C语言程序设计 清华大学郑莉安颖莲 作业 。复习:第七章 ·P1417.8,7.11,7.15,7.17 预习:第九章 Page 16
C语言程序设计 清华大学 郑莉 安颖莲 Page 16 作 业 • 复习:第七章 • P141 7.8, 7.11, 7.15, 7.17 • 预习:第九章
C语言程序设计 清华大学 郑莉安颖莲 函数的返回值 通过return语句返回。 return语句只能把一个返值传递给调用函数。 。 返回值的类型为定义的函数类型,若return 语句中表达式类型与函数类型不一致,则转换 为函数类型。 。 返回值可以是数值,也可以是地址。当返值是 地址时,应该用指针接受它。 。1 无返回值的函数,定义为void类型
C语言程序设计 清华大学 郑莉 安颖莲 Page 17 函数的返回值 • 通过 return 语句返回。 • return 语句只能把一个返值传递给调用函数。 • 返回值的类型为定义的函数类型,若 return 语句中表达式类型与函数类型不一致,则转换 为函数类型。 • 返回值可以是数值,也可以是地址。当返值是 地址时,应该用指针接受它。 • 无返回值的函数,定义为 void 类型
C语言程序设计 清华大学郑莉安颖莲 函函数间的参数传递 在函数被调用时才分配形参的存储单元。 。 实参可以是常量、变量或表达式。 ·实参类型必须与形参相符。 ·传递时是传递参数值,即单向传递 例4 ·使用地址作为参数,可以返回函数处理结果。 数组作为参数时的情况。 数组元素作实参,与单个变量一样。 数组名作参数,形、实参数都应是数组名,类型要 一样,传送的是数组首地址
C语言程序设计 清华大学 郑莉 安颖莲 Page 18 函数间的参数传递 • 在函数被调用时才分配形参的存储单元。 • 实参可以是常量、变量或表达式。 • 实参类型必须与形参相符。 • 传递时是传递参数值,即单向传递。 • 使用地址作为参数,可以返回函数处理结果。 • 数组作为参数时的情况。 - 数组元素作实参,与单个变量一样。 - 数组名作参数,形、实参数都应是数组名,类型要 一样,传送的是数组首地址。 例 4
C语言程序设计 清华大学 郑莉安颖莲 使用全局变量传递数据 在所有函数之外说明的变量是全局变 量,它在所有函数中都是可见的。 利用全局变量的这个特性,可以在函 数间传递数据 注:变量的类型和作用范围
C语言程序设计 清华大学 郑莉 安颖莲 Page 19 使用全局变量传递数据 在所有函数之外说明的变量是全局变 量,它在所有函数中都是可见的。 利用全局变量的这个特性,可以在函 数间传递数据 注:变量的类型和作用范围