内存管理之 存储变量
来源:互联网 发布:山西 软件开发水平 编辑:程序博客网 时间:2024/05/29 15:48
5. 局部变量和全局变量
从变量作用域角度分,变量可分为局部变量和全局变量。
1)内部变量(局部变量)
在一个函数内定义,只在函数范围内有效的变量。
2)外部变量(全局变量)
在函数外定义,可以为本文件其它函数所共用,有效范围从定义变量的位置开始
到本文件结束。建议尽量少使用全局变量,因为它在程序全部执行过程中都占用
资源,而且使函数的通用性降低了。如果在定义外部变量之前的函数要想使用该
外部变量,则应在该函数中用extern作外部变量说明。
4楼
6. 动态存储变量与静态存储变量
从变量值存在的时间(生存期)角度来分,可分为静态存储变量和动态存储变量。静态存储指在程序运行期间给变量分配固定的存储空间,动态存储指程序运行期间根据需要动态的给变量分配存储空间。
C语言中,变量的存储方法分为两大类:静态存储类和动态存储类,具体包括:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。
1) 局部变量的存储方式
函数中的局部变量如不作专门说明,都之auto的,即动态存储的,auto可以省略。局部变量也可以定义为static的,这时它在函数内值是不变的。静态局部变量如不赋初值,编译时系统自动赋值为0,动态局部变量如不赋初值,则它的值是个不确定的值。C规定,只有在定义全局变量和局部静态变量时才能对数组赋初值。为提高执行效率,c允许将局部变量值放在寄存器中,这种变量叫register变量,要用register说明。但只有局部动态变量和形式参数可以作为register变量,其它不行。
2) 全局变量的存储方式
全局变量在函数外部定义,编译时分配在静态存储区,可以在程序中各个函数所引用。多个文件的情况如何引用全局变量呢?假如在一个文件定义全局变量,在别的文件引用,就要在此文件中用extern对全局变量说明,但如果全局变量定义时用static的话,此全局变量就只能在本文件中引用了,而不能被其它文件引用。
5楼
3) 存储类别小结
从作用域角度分,有局部变量和全局变量
局部变量:自动变量,即动态局部变量(离开函数,值就消失)
静态局部变量(离开函数,值仍保留)
寄存器变量(离开函数,值就消失)
(形参可定义为自动变量和寄存器变量)
全局变量:静态全局变量(只限本文件引用)
全局变量(允许其它文件引用)
从存在的时间分,有静态存储和动态存储
动态存储:自动变量(本函数内有效)
寄存器变量(本函数内有效)
形参
静态存储:静态局部变量(函数内有效)
静态全局变量(本文件内有效)
全局变量(其它文件可引用)
从变量值存放的位置分
静态存储区:静态局部变量
静态全局变量
全局变量
动态存储区:自动变量和形参
寄存器内:寄存器变量
7. 内部函数和外部函数
内部函数:只能被本文件中的其它函数调用,定义时前加static,内部函数又称静态函数。
外部函数:可以被其它文件调用,定义时前加extern,如果省略,则隐含为外部函数,在需要调用此函数的文件中,一般要用extern说明。
__________________________________________________________________________________________________________________
- 内存管理之 存储变量
- 变量的存储属性与内存管理
- 变量存储(内存)
- 存储器(内存)管理之分页存储管理
- 存储管理:内存、磁盘
- 操作系统内存存储管理
- 恶补内存常识之段页式存储管理(一)
- OK6410(s3c6410)存储之MMU(内存管理单元)
- C primer plus 学习之存储类、链接、内存管理
- python变量—内存存储
- 把变量和函数的存储类别说清楚也谈Linux内存管理
- char*内存变量的管理
- java static 变量 内存管理
- Matlab内存变量管理命令
- Block和变量,内存管理
- Java变量的内存管理
- 内存存储管理模拟算法
- 【嵌入式】内存管理,虚拟存储
- 简易的315M OOK 遥控电路
- 关于android内核从linux内核分支上除名
- GDB单步调试程序
- vnc设置
- C++编程规范 设计风格
- 内存管理之 存储变量
- 趣谈《西游记》与团队管理(一)
- smarty使用变量(从配置文件读取变量 +Smarty变量调节器)
- 句柄
- 书写测试用例之--- 等价类划分 法
- 【android学习之十三】——SDK实例NotePad 分析2
- Hadoop之更快的排序
- dom4j 的简单学习
- sqlplus命令学习