标题: C语言变量的作用域与存储类型 [打印本页]
作者: 乖宝宝54 时间: 2020-2-15 22:36
标题: C语言变量的作用域与存储类型
1 变量的定义三方面:
(1)数据类型:占用内存空间大小(int,double等)
(2)作用域:有效性范围
(3)存储类型:在内存的存储方式
- 这里又引入一个概念-“生存期”,即变量在程序中的建立和消亡时间
存储类型决定变量的生存期和作用域
2 在内存中,供用户使用的三种空间:
(1)程序区:存放代码
(2)静态和动态存储区:存放数据
a.静态存储区:在编译时就分配了内存空间,在整个程序执行中,内存单元一直保持到程序结束才释放
b.动态存储区:只有当程序执行到变量所在的函数被调用时,系统才为其分配内存空间,函数调用结束,变量即被释放,
| 何时分配内存空间 | 何时释放 | 生存期 |
静态存储区 | 在程序编译时 | 程序结束 | 整个程序的运行期间 |
动态存储区 | 只有当程序执行到变量所在的函数被调用时 | 函数调用结束 | 函数的调用期间 |
3 变量的分类
(1)局部变量:在一个函数内部或者某个复合语句内部定义的变量
(2)全局变量:在所有函数外部定义的变量。(默认初值为0)
| 作用域 | 存放区域 | 特点 |
局部变量 | 局限于定义它的函数或复合语句 | 动态存储区 | 在不同的函数中允许同名, 如果变量名相同,则当前局部变量优先 |
全局变量 | 从定义变量的位置开始到源程序结束 | 静态存储区 |
- 若局部变量与全局变量同名,则局部变量优先,即在该函数或复合语句内,全局变量不起作用;
- 如果要在变量定义之前使用它,需用extern加以声明可扩展全局变量作用域;
|
作者: karolyte 时间: 2020-2-16 12:12
受教了!
作者: 尼古拉斯-赵四 时间: 2020-2-18 19:34
局部变量一定存在动态存储区,全局变量一定存在静态存储区,这句话对吗
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |