静态变量、自动变量与寄存器变量的存储
来源:互联网 发布:mysql简版 编辑:程序博客网 时间:2024/05/17 01:32
一、我们声明的变量有几类?
变量的存储位置与变量的类型有关,这里变量的类型不是int、float之类的类型, 而是分为三类:静态变量、自动变量和寄存器变量。
然而,变量到底属于这三类中的哪一类是根据变量在源文件中的声明位置和声明方式所决定的。
二、这三类变量分别是怎么存储的(存储类型)?
变量的存储类型(storage class)是指存储变量值的内存类型。变量的存储类型决定变量何时创建、何时销毁以及它的值将保持多久。有三个地方可以用于存储变量:静态内存、运行时堆栈、硬件寄存器。在这三个地方存储的变量具有不同的特性。
(1)存储在静态内存的变量
凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存,这类变量也叫静态(static)变量。对于这类变量,你无法为它们指定其他存储类型。
静态变量的生存期:静态变量在程序运行之前创建,在整个程序执行期间始终存在。
(2)存储在堆栈内存的变量
在代码块内部声明的变量的缺省存储类型是自动的(automatic),也就是说它存储于堆栈中,这类变量叫自动(auto)变量,也叫局部变量。有一个关键字auto就是用于修饰这种类型的,但它极少使用,因为代码块中的变量缺省就是自动变量。
自动变量的生存期:在程序执行到声明自动变量的代码块时,自动变量才被创建,当程序的执行流离开该代码块时,这些自动变量便自行销毁。
如果该代码块被执行多次,例如一个函数被执行多次,其内部的自动变量也就被重新创建多次。而且每次被创建的内存地址可能不同。
(3)代码块中的静态变量
静态局部变量的生存期:代码块首次执行时创建该变量,直到整个程序结束。
- 静态变量、自动变量与寄存器变量的存储
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、外部变量)
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、外部变量)
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量)
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量)
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、extern、static) 总结
- 自动变量、静态变量、全局变量、寄存器变量、易失变量
- 16.变量类型 自动变量 静态变量 寄存器变量
- 自动变量、静态变量、寄存器变量和易失变量的相关解释
- C寄存器变量、局部静态变量、自动变量效率对比
- 全局变量,局部变量,静态变量,寄存器变量的存储及关系
- 动态存储变量与静态存储变量
- C语言的动态存储变量与静态存储变量
- 静态变量、动态变量、寄存器变量、…
- 自动、静态、 寄存器、易失变量的区别
- auto自动、静态、 寄存器、易失变量的区别
- 自动、静态、 寄存器、易失变量的区别
- OPENGL学习笔记之八
- IntelliJ idea2017 安装
- 【干货#009】小程序如何格式化显示对象数组属性
- Leetcode算法学习日志-394 Decode String
- c#异步请求用await和.Result用哪个好
- 静态变量、自动变量与寄存器变量的存储
- 最长回文子串
- 【程序员代码面试指南】-栈和队列-最小栈/ 双栈队列/ 栈排序
- 字符串 转变成数字
- 导入orcale数据库
- Mysql启动报错:Unit mysql.service failed to load: No such file or directory的解决办法
- PullToRefresh下拉和上拉简单实现
- Java性能优化之JVM GC(垃圾回收机制)
- Shellcode和Payload入门101-超详细源码和注释以及Hex文本