变量的属性(全局变量、局部变量、动态变量、静态变量等)
变量的属性
1、变量的分类
l 根据作用域:可分为全局变量和局部变量。
l 根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。
静态存储方式是指在程序运行期间分配固定的存储空间的方式,动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。
2、变量的作用域和存储类别的关系
每一个变量均有作用域和存储类别两个属性,这些属性共同用于描述一个变量,这些不同类型的变量与存储位置的关系如下:
l 外部变量(全局变量)、静态外部变量、静态局部变量存储在静态存储区。
l 自动局部变量(局部变量默认为自动局部变量)、函数形参存储在动态存储区(即栈区)。
l 不论是静态存储区还是动态存储区均属于内存中的用户区。
l 而寄存器变量是存储在CPU寄存器中的而不是内存中。
3、与作用域相关的几个属性:
l 局部变量:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的,这种类型的变量就称为“局部变量”。
l 全局变量:在函数外定义的变量,可以为本源文件中其它函数所公用,有效范围为从定义变量的位置开始到本源文件结束,这种类型的变量就称为“全局变量”。
4、与存储类型相关的几个属性:
l atuo:在声明局部变量时,若不指定 static,默认均是 auto,这类变量都是动态分配存储空间的,数据存储在动态存储区中。
l static:在声明局部变量时,使用关键字 static 将局部变量指定为“静态局部变量”,这样在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次函数调用时,该变量已有值就是上次函数调用结束时的值。
l register:在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
l extern:用于扩展全局变量的作用域。
1) 比如如果函数想引用一个外部变量,但该外部变量在该函数后定义,那么这个函数需要使用 extern 来声明变量,这样才能使用在该函数后面定义的全局变量。
2) 此外,extern 还可以在多文件的程序中声明外部变量。
变量的属性(全局变量、局部变量、动态变量、静态变量等)相关推荐
- python 中全局变量、局部变量、静态变量,实例变量的区别和理解
python 中全局变量.局部变量.静态变量,实例变量的区别和理解 在python中一个XXX.py 文件可能有多个类所以要严格区分这些变量 全局变量: 在这个模块内也就是在整个.py 文件里,并且在 ...
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
类体由2部分构成: 一部分是变量的定义; 一部分是方法的定义(一个类中可以有多个方法) 在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效. (全局变量应该是成员变量的俗称) 在方法体 ...
- 全局变量、局部变量和静态变量
全局变量 定义:在函数外定义的变量是全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围从定义变量的位置开始到本源文件结束. 设全局变量的作用:增加了函数间数据联系的渠道: 不必要时不要使用全 ...
- php局部变量和全局变量的区别,PHP局部变量、静态变量、全局变量和超全局变量的使用和区别...
首先,PHP 中从变量的范围上可以分为 4 类,分别是静态变量.局部变量.全局变量和超全局变量. PHP 局部变量与全局变量 在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的.在函数外定义 ...
- 2020-11-28(全局变量和局部静态变量)
常量和全局变量有着相似的特征,都是在程序执行前就存在了.在大多数情况下,在PE文件中的只读数据节中常量的节属性被修饰为不可写:而全局变量和静态变量则在属性为可读写的数据节中. 具有初始值的全局变量,其 ...
- java静态局部变量_java中成员变量,局部变量,静态变量的辨析
转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...
- 静态变量(类变量)和非静态变量(成员变量、实例变量)的区别
由static修饰的变量称为静态变量,其实质上就是一个全局变量.如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰:没有被静态修饰的内容,其实是属于对象的特殊描述. 不同的对象的实例变量将被分 ...
- python 类中静态变量_Python中的类或静态变量
python 类中静态变量 Python类/静态变量 (Python Class / Static Variables) Class or Static variables are class-rel ...
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别...
局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中. 创建时若未初始化,则为随机值. 全局变量: 创建在static区,生命周期一直存在. 创建时若未初始化,则为0. 静态局部变量 ...
- python局部静态变量_全局变量、局部变量和静态变量
全局变量和局部变量在写代码时需要区分清楚,不然会出大问题.不同语言定义不同范围的变量的写法有很大的区别. 那么静态变量是在什么场景下用到呢?我们来假设这样一个场景:在函数内部定义的变量,当程序执行到它 ...
最新文章
- 使用火炬之光资源(转)
- onSaveInstanceState和onRestoreInstanceState触发的时机
- Vue+Openlayer使用Draw实现交互式绘制线段
- 63个优秀测试网站地址【个人总结】
- php二维数组的取值与转换
- 员工激励手段1+1组合出击
- JavaScript对象学习笔记
- openstack neutron(tap、qvb、qvo详解)(转)
- Linux/Android之perf追内存泄漏工具(api级别)
- 转载AWS 基础知识
- Lambda表达式公共拼接函数(原创)
- 快速排序(java代码)
- js md5 加密算法
- openpose的搭建
- java calendar星期几_java使用Calendar类判断今天是星期几
- cannot resolve symbol 问题
- matlab中filtfilt函数解析
- 川师计算机类专业收分安徽,四川师范大学专业收分
- composer的原理和正确使用(最新)
- XiaoHu日志 9/5~9/6
热门文章
- 广东海洋大学数学与计算机学院校友会,数学与计算机学院召开2020级研究生入学教育会...
- C/C++在不确定输入字符串长度情况下,对其进行存储和字符操作问题
- 使用Python,OpenCV转换颜色空间,追踪对象的轨迹
- python3socket非阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信
- 基于线段的激光雷达和单目联合曲面重建​
- 剑指offer: 面试题03. 数组中重复的数字
- 算法时间复杂度求解法【详细过程说明】
- 参考WebStorm设置VSCode“转到编辑器中的符号”快捷键为Shift双击(这是一个频繁使用的快捷键)
- 设置显示Git的修改历史History快捷键Alt+H,方便多人开发的时候快速查看谁修改了代码
- 《ActionScript 3.0权威指南》阅读笔记