存储的属性有哪些

存储的属性有:1、存储位置;2、生存期;3、变量的作用域。存储位置是指,变量存储的地点,有普通内存、运行时堆栈、硬件寄存器三种存储位置,变量的缺省存储类型取决于它的申明位置。

存储的属性有哪些-Worktile社区

1、存储位置

  • 普通内存
  • 运行时堆栈
  • 硬件寄存器

变量的缺省存储类型取决于它的申明位置:

  • 凡是在任何代码块之外声明的变量总是存储在静态内存中。不属于堆栈内存,这类变量称为静态变量。静态变量在函数运行之前创建。
  • 在代码块内部声明的变量的缺省存储类型是自动的,存储在堆栈中。
  • 对于在代码块内部声明的变量,如果给它加上 static 关键字,可以使它的存储类型由自动转变为静态。具有静态存储类型的变量在整个执行过程中一直存在。而不仅仅是它所在的代码块执行的时候存在。注意:修改变量的存储类型,并不修改变量的作用域,它只是在该代码块内部按名字访问。
  • 寄存器变量:register 关键字。在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C语言\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。

2、生存期

从对象分配到内存开始,到垃圾回收器从内存中删除对象结束这一段时间。即对象的存在时间。生存期分为分为静态生存期和动态生存期。

标准C语言中,变量可以具有3种生存期中的一种:

  • 静态生存期:只要程序开始运行,这种生存期的变量就被分配了内存,这种变量的生存期和程序的运行期相同.
  • 局部生存期:这种变量的生存期开始于程序执行经过其声明点时,而结束于命名它的标识符所在的作用域尾.
  • 动态生存期:这种变量可以随时创建,随时删除,创建和删除是程序员用内存操作函数进行的。

3、变量的作用域

作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。对于对象而言(其他也是一样的),在main函数中,对象的作用域为他所在的最近的一对花括号内。在后花括号处析构函数被调用;全局的对象的作用域为声明之后的整个文件,析构函数在最后被调用。另外,临时产生的对象在使用完后立即会被析构。

作用域分为全局作用域和局部作用域:

  • 全局作用域:由于内置名称空间的名字与全局名称空间的名字,可以在任何位置来访问,所以它们俩可以划到同一个范围,称之为全局范围即全局作用域。
  • 局部作用域:局部名称空间的名字只能在当前的函数中访问,所以它单独划到一个范围中,这个范围称之为局部作用范围即局部作用域。

延伸阅读

java中变量的存储位置

  • 寄存器:非常快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制。
  • 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)
  • 堆:存放所有new出来的对象。
  • 静态域:存放静态成员(static定义的)。
  • 常量池:存放字符串常量和基本类型常量(public static final)。
  • 非RAM存储:硬盘等永久存储空间。

文章标题:存储的属性有哪些,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/35549

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLW的头像Z, ZLW

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部