寄存器是cpu的一部分,是计算机中速度最快的存储器,分为 通用寄存器、专用寄存器、段寄存器、其他寄存器,每个寄存器存储一种类型的变量,各司其职,这样说来,又分为累加器、源变址寄存器、基址寄存器、计数寄存器、状态寄存器等等寄存器变量,顾名思义,就是存贮在寄存器里的变量。由于操作寄存器的速度远高于操作内存,但寄存器的数量有限,所以把最频繁使用的数据存储在寄存器里,有效地提高程序运行速率。c语言定义为 register int a;
c语言的变量有4种存储类型,分别是auto(自动型)、static(静态型)、register(寄存器型)和extern(外部型)。在定义或说明一个变量时可以加上存储类型关键字,以限定其存储类别。
存储类型决定了系统将在哪一个数据存储区为变量分配存储空间。auto型将在堆栈区分配存储空间;static型将在静态数据区分配存储空间;register型将在cpu内部的寄存器中分配存储空间;而extern将不为变量分配存储空间,extern声明该变量在别的地方已经分配了存储空间。
变量存储类型关键字只需加在变量定义语句类型关键字前面即可。
char ch1;/*定义了一个char型变量ch1,其存储类型默认为自动型(必须是内部变量)*/
static char ch2;/*定义了一个char型变量ch2,其存储类型指定为静态型*/
注意:以上auto型是对内部变量而言,对于外部变量不存在自动型的问题。内部变量自动在堆栈区分配空间。事实上,内部变量默认为自动型,所以auto限定词没有任何用处。
变量的存储类别
动态存储与静态存储
从变量的产生时间上可以分为静态存储和动态存储。
静态存储就是指程序运行分配固定的存储方式,而动态存储则是在程序运行期间根据需要动态的分配存储空间。
auto变量
auto关键字就是修饰一个局部变量为自动的,每次执行到定义该变量是都会产生一个新的变量,并对其重新进行初始化。
局部变量的默认存储方式就是auto,定义时可以忽略
static变量
static变量为静态变量,将函数内部和外部的变量声明成static的意义是不一致的。
对于局部变量来说,static变量和auto变量是相对而言的。在语句块执行期间,static变量将始终保持他的值(地址不变),并且初始化操作只在第一次执行时起作用。
register变量
register变量称为寄存器存储类变量。使用register的目的是把某个局部变量存放在计算机的某个硬件寄存器而不是内存中。这样的好处是可以提高程序的运行速度,不过这只是反映了程序员的主观意愿,实际上编辑器可以忽略register对变量的修饰。
用户无法获得寄存器变量的地址,因为绝大多数计算机的硬件寄存器都不占用内存地址。而且即时编译器忽略了register而把变量存放在可设定的内存中,也是无法获取变量的地址的。
如果想要有效的利用寄存器register关键字,必须向汇编语言程序员那样了解处理器的内部结构,知道可用于存放变量的寄存器数量,种类以及工作方式。但是,在不同的计算机对于这些细节可能是不同的,因此,对于一个要具备可移植的程序来说,register的作用并不大/
extern变量
extern变量称为外部存储变量.extern声明了程序中将要用到但尚未定义的外部变量。通常,外部存储类都用于声明在另一个转换单元中定义的常量。
一个工程是由多个c文件组成的。这些源代码文件分别编译,然后链接成一个可执行模块。把这样的一个程序作为一个工程进行管理,并且生成一个工程文件来记录所包含的所有源代码文件
信步科技SV6-E6614车载3G主板规格
滴滴出行走向世界_在墨尔本推出滴滴快车服务
摩尔线程:全功能GPU为未来元宇宙计算提供综合算力
三星146英寸拼接型Micro LED电视正式发布
如何选择适合自己的耳机?佩戴舒适的蓝牙耳机推荐
寄存器变量的存储类别
基于STC12C5AS2的电子秤设计方案介绍
电气配线施工中电线颜色的选择
可控硅的结构
数字经济时代:城市到底如何演绎?产业将何去何从?
如何使用新型传感器为医疗应用构建智能手机附件
别挣扎了,你的旧iPhone还想流畅玩游戏?不存在的!
与人工盘煤相比,激光自动盘煤系统具有哪些优势?
电阻特点有哪些 电阻用法介绍
水分含量传感器根据电磁波在介质中传播频率来测量土壤的介电常数
华为Mate20降至“新低价”,用户纷纷表示说买早了
I2C总线协议及其应用(图)
圣诞节蓝牙耳机选哪款作为礼物比较好?耐用的蓝牙耳机推荐
坐拥多种优势的临港,已经站上了人工智能的风口
ATF里都包括哪些东西呢?