|
Posted on
2023-03-12 20:29
乔55
阅读( 26)
评论()
编辑
收藏
举报
变量概念
- 变量提供一个具名的、可供程序员操作的存储空间
- 变量的数据类型决定了所占的内存空间大小、存储方式、存储范围、参参与的运算
- 对象是一块能存储数据,并具有某种类型的内存空间
变量的分类
- 按生命周期分类
- 静态存储变量:程序运行期间分配固定的存储空间的变量
- 动态存储变量:程序运行期间根据需要进行动分配存储空间的变量
- 函数形参
- 局部变量,比如函数内部定义的一些变量
- 函数调用时现场的一些数据和返回地址等
- 按作用域分类
- 局部变量:函数形参,函数内部、块内部定义变量叫悦变量
- 局部变量没有声明和定义的区别,经的作用域范围只在局部,故不存在先声明后定义的说法
- 遇到同名变量时,内部作用域范围的变量屏蔽外部作用域范围的变量
- 全局变量:(在函数外部定义的)存放在静态存储区
- 程序开始执行时给全局变量分配存储区,程序执行完毕后释放这些成华区
- 在程序执行过程中,他们占固定的存储单元,而不是动态地分配和释放
全局变量
- 全局变量的概念
- 不能重复定义,但可多次声明
- 可跨文件使用,但容易被覆盖,使用时需注意
- 加了extern关键字,该变量就变成外部 链接属性
- 全局变量初始值默认是0
局部变量
static的特性
- static变量具有继承属性
- static变量与auto变量不同,auto变量不给定初始值,而static静态变量是有默认初始值的
- 变量或函数一旦被static修饰,它只能在程序内部使用,防止对外扩展
- 即使是局部static变量,仍有全局变量所具有的生命周期和局部可见性
static局部变量
- 局部static变量的生命周期贯穿函数调用及之后的时间
- 变量在程序的执行路径中第一次经过该变量的定义语句时被初始化,直到程序终止它才被销毁。在此期间即使函数结束,也对它无影响
- static局部变量在编译时被赋初值,且只赋值一次
- 静态局部变量若未被初始化,则会被初始化为0(内置类型)
- 普通局部变量则是未定的
缺点:长期占用内存,降低了程序可读性
static全局变量
变量初始化
- 内置变量的默认初始化方式:若未被显式初始化,则它的值由位置决定
- 定义于函数体外的内置类型初始值为0
- 定义于函数体内部的内置变量类型变量值不被初始化,其值是未定义的,拷贝或访问它时将发生错误
- 建议初始化每一个内置类型的变量,而绝大多数的类都无须显式初始化,因为它被提供了合适的默认值
|