变量的作用域与存储类别(精)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 变量从作用域可分为外部变量和内部变量,即全局 变量和局部变量 2. 变量从生存期的角度可分为静态变量和动态变量 3. 函数也有内部函数与外部函数,访问时有所不同
整理课堂笔记 完成课后习题
不确定
自动赋初值0或空字符
内部函数和外部函数
根据函数能否被其他源程序文件调用,将函数分为内部函数 和外部函数。
根据函数能否被其他源程序在定义内部函数时,在函数名和 函数类型的前面加static标识符。使用内部函数,可以使函 数只局限于所在文件,如果在不同的文件中有同名的内部函 数,互不干扰。
C语言规定,如果在定义函数时省略extern,则隐含为外部函 数。
变量的存储类别(2/3)
在C语言中每一个变量和函数有两个属性:数据类型 和数据的存储类别。存储类别指的是数据在内存中 存储的方式。
在C语言中,存储方式分为两大类:静态存储类和动 态存储类。具体包含四种: 自动的(auto) 静态的(static) 寄存器的(register) 外部的(extern)
变量的作用域与存储类别
教学内容 变量的作用域 变量的存储类别 内部函数和外部函数
C语言中,函数可以嵌套调用,不可以嵌套定义 函数递归调用指对函数自身的调用,算法描述为:
if (递归终止条件) return (条件终止时的值) else return 递归公式
变量的作用域(1/4)
任何一种变量都是有自己的作用范围,变量的作 用范围就是指变量的作用域,根据变量的作用域 可把变量分为局部变量和全局变量。 局部变量也称为内部变量。局部变量是在函数内 作定义说明的。其作用域仅限于函数内, 离开该 函数后再使用这种变量是非法的。 属于局部变量的有:
全局变量也称为外部变量,它是在函数外部定义 的变量。它不属于哪一个函数,它属于一个源程序 文件。其作用域是整个源程序。在函数中使用全局 变量,一般应作全局变量说明。只有在函数内经过 说明的全局变量才能使用。
变量的作用域(3/4)
全局变量:在函数之外定义的变量。(所有函数前, 各个函数之间,所有函数后) 全局变量作用域:从定义全局变量的位置起到本源 程序结束为止,及有extern说明的其它地方或源文 件 外部变量说明: extern 数据类型 变量表; 外部变量定义与外部变量说明不同:
在函数体内定义的变量,作用域局限于函数体内。 在复合语句内定义的变量,作用域局限于复合语句内。 形式参数也是局部变量,只在其所在的函数范围内有效。
变量的作用域(2/4)
关于局部变量的几点说明:
主函数main中定义的变量也只在主函数中有效,而不因为在 主函数中定义而在整个程序中有效,主函数也不能使用其他 函数中定义的变量。 不同函数中可以使用相同名字的局部变量,它们代表不同的 对象,互不干扰。
变量的存储类别(3/3)
局部变量 存储类别 外部变量
auto
存储方式
Fra Baidu bibliotek
register 动态
局部static
寄存器 存储区 动态区 生存期 函数调用开始至结束
外部static 静态 静态存储区
外部
程序整个运行期间
作用域 定义变量的函数或复合语句内 本文件 其它文件 赋初值 每次函数调用时 编译时赋初值,只赋一次 未赋初值
定义 次数: 只能1次 位置: 所有函数之外 分配内存: 分配内存,可初始化 说明 可说明多次 函数内或函数外 不分配内存,不可初始化
变量的作用域(4/4)
关于全局变量的几点说明: 全局变量的作用是增加了函数间数据联系的渠道。 应尽量少使用全局变量,因为:
全局变量在程序全部执行过程中占用存储单元 降低了函数的通用性、可靠性,可移植性 降低程序清晰性,容易出错
若外部变量与局部变量同名,则外部变量被屏蔽。
变量的存储类别(1/3)
存储方式 静态存储:程序运行期间分配固定存储空间 动态存储:程序运行期间根据需要动态分配存储空 间 用户存储空间可以分为三个部分:
程序区 静态存储区 动态存储区
全局变量、局部静态变量 形参变量 局部动态变量(auto ) 函数调用现场保护和返回地址等
相关文档
最新文档