讲师博文
变量的存储类型(storage class) 来源 : 未知     2018-08-15

对于变量的存储类型,前面遇到过一些疑惑,再简单的在这里说一下。存储类型是指存储变量值的内存类型,它用来决定存储空间的大小。变量的存储类型决定着变量的存储器和作用域。有三个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。在这三个地方存储的变量具有不同的特性。

本文引用地址:http://www.hqyj.com/emb/Column/7300.html

存储期:变量占据内存的时间期限-----与函数共存、与程序共存。

作用域:变量出现的有效区域-----函数内、本文件内、多文件内。

自动类型:auto为存储类说明符,可以说明一个变量为自动变量。在一个代码块内声明的变量,无论有没有存储类修饰符auto,都属于自动存储类。该类具有自动存储时期、代码块的作用域和空链接(no linkage)。如未初始化,它的值是不确定的。

寄存器存储:关键字register可以用于自动变量的声明,提示他们应该存储于机器的硬件寄存器而不是内存中,这类变量称为寄存器变量。通常,寄存器变量比存储于内存的变量访问起来效率更高。但是,编译器并不一定要理财register关键字,如果有太多的变量被声明为register,它只选取前几个实际存储于寄存器中,其余的就按普通自动比那辆处理。如果一个编译器自己具有一套寄存器优化方法,它可能忽略register关键字。

静态存储:对于在代码块内部声明的变量,如果给它加上关键字static,可以使他的存储类型从自动变为静态。具有静态存储类型的变量在整个程序执行过程中一直存在,而不仅仅在声明它的代码块的执行时存在。注意,修改变量的存储类型并不标示修改该变量的作用域,它任然只能在该代码块内部按名字访问。函数的形式参数不能声明

变量的缺省存储类型:这取决于它的声明位置。1、凡是在任何代码块之外声明的变量(全局变量)总是存储于静态内存中,也就是不属于堆栈的内存,这类变量成为静态变量。对于这类变量,你无法为他们制定其他存储类型。2、而在代码块内部声明的变量(局部变量)的缺省存储类型时是自动的(automatic),也就是说他存储于堆栈中,成为自动变量。有一个关键字auto就是用修饰这种存储类型的,但它极少使用。

内容先讲这些,自己碰到的问题,也希望能对大家有所帮助!

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:基于linux3.0.15内核的中星微zc301摄像头驱动及网络视频服务器移

下一篇:飞行控制器Pixhawk简介

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号