寄存器变量

寄存器变量:

  变量一般情况下都存在于内存中。如果程序需要使用某个变量,CPU的控制器将从内存中取得变量值后会将其暂存在寄存器中。寄存器就是CPU自己的"小内存",它的特点是"容量小、速度快"。正常情况下,编程语言本身无法直接操作寄存器。但某些时候,一些变量可能会被频繁地使用,这时,频繁地对内存进行存取操作就会耗费较多的时间;如果我们能够有效地利用CPU的寄存器,就会显著提升程序的运行效率。

C语言中使用关键字register来声明局部变量为寄存器变量。寄存器变量的值会被存放在CPU的寄存器中,每当需要使用它们时,CPU就可以直接使用,而无须再通过控制器从内存中获取。由于操作寄存器的速度远高于操作内存,所以正确地使用寄存器变量能够有效地提高程序运行效率。register型变量常被用于作为循环控制变量,这能充分体现它的高速特点。

但是,我们必须明确只 有局部自动变量和形式参数才能够被定义为寄存器变量,全局变量和局部静态变量都不能被定义为寄存器变量。而且,一个计算机中寄存器数量是有限的,一般为2 到3个,因此寄存器变量的数量不能太多。对于在一个函数中说明的多于2到3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量。 受硬件寄存器长度的限制,寄存器变量只能是char、int或指针型,而不能使其他复杂数据类型。由于register变量使用的是硬件CPU中的寄存器,寄存器变量无地址,所以不能使用取地址运算符"&"求寄存器变量的地址。

以下为一个寄存器变量的声明:

register int  variable;

  当今的优化编译系统能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定,因此,实际上用register声明变量是不必要的

时间: 2024-09-29 10:05:06

寄存器变量的相关文章

c语言寄存器变量

寄存器存在于CPU内部,运算速度非常快, 因为内存中的数据必须载入寄存器才能计算.如果直接定义一个变量为寄存器变量,则少了载入等过程自然会快.对于频繁使用的变量可以把它放在寄存器中来提速度. 对于VC编译器会自动优化,即使没有声明寄存器变量,VC也会自动优化. 对于GCC编译器就不会自动优化. 定义一个寄存器变量: 2 3 void main() 4 { 5 register int i = 0; 6 //&i; //寄存器变量放在cpu中,没有地址, 但是c++中没问题 7 } 接下来,通过g

Linux C笔记之 变量存储类型 详解

存储类型: 变量的存储类型是指存储变量值的内存类型 : 变量的存储类型决定变量何时创建.何时销毁以及它的值将保存多久 : 存储变量:普通内存.运行时堆栈.硬件寄存器: 变量的缺省存储类型取决于它的声明位置: 静态(static)变量: 在代码块之外声明的变量,存储于静态内存中,也就是不属于堆栈的内存. 静态变量,无法为它指定其他存储类型.它在程序运行之前创建,在程序的整个执行期间始终存在.它始终保持原先的值,除非给他赋一个不同的值或者程序结束. 自动(automatic)变量: 在代码块内部声明

C++变量的存储类别与作用域

总结一下C++中变量的存储类别以及变量的作用域. (1)标示符的存储类别决定了标示符在内存中存在的时间(我们可以理解标示符就是确定一个变量的符号,也就是我们所说的变量名) 二:存储类别 (1)静态存储类别:静态存数类别变量(我们简称静态变量),从程序的开始处就存在,其生命期伴随整个程序. (2)自动存储类别:当变量时自动存储类别时,变量在进入到定义它们的程序快时定义它,在离开它们所在的程序块(作用域)时销毁它,因此成为自动变量.其中关键字auto和register用来声明自动类型的变量, 三:自

变量定义与变量声明

1.看例子如下: int tern=1: main() { extern int tern; ...... 这里tern 声明了两次,第一次声明为变量留出了存储空间.它构成了变量的定义.第二次声明只是告诉编译器使用先前定义的变量tern,因此不是一个定义.第一次声明称为定义声明,第二次声明称为引用声明,关键字extern表明该声明不是一个定义,因此它指示编译器参考其他地方.而且extern是一个引用声明,绝不是定义声明,所以不可用它进行定义操作.木有这种的操作的哦. 2.具有内部链接的静态变量

C语言——变量类型

局部变量 1> 定义:在函数内部定义的变量,称为局部变量.形式参数也属于局部变量.必须在赋值之后才能用: 2> 作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它. 全局变量 1> 定义:在所有函数外部定义的变量,称为全局变量.默认初始化值0. 2> 作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享. 变量的存储类型 * 变量的存储类型就是指变量存储在什么地方.有3个地方可

C的日记-变量的作用域、生存期和内存位置

“天地玄黄,宇宙洪荒”,先有天地,之后方有古今.变量同是,先有变量的作用域(存在的地点),然后出现了变量的生存期(存在的时间). [变量存储的方式]首先变量实际上是存放到两个区域的: 静态存储区:是指在程序运行区间由系统分配固定的存储空间的方式. 动态存储区:程序运行期间根据需要动态的分配存储空间. [变量分类] 局部变量:在[函数]内部声明的变量. [作用域]:从定义变量的位置到本函数结束. <1>自动变量(auto变量),即动态局部变量,不专门声明为static的变量.          

【编程语言】变量的存储时期/作用域以及static/extern的用法

存储类:               存储时期       链接         内存管理 对于一个变量(不同的存储类型)可以通过存储时期,链接属性,以及相应的作用域来描述它. 存储时期就是变量在内存中的保留时间,变量的作用域和链接在一起表明程序的哪些部分可以通过变量名来使用该变量.于是就有了不通过的存储时期,链接属性,以及作用域的组合 [1]存储时期(变量的生命期,表示存取一个变量在内存空间的存放以及释放时间)                           局部变量          

变量的存储小结

变量是C语言最基础也是最核心的概念,对于初学C语言的同学来说变量的存储总是觉得比较混乱.这里对C的变量做一个简单的小结,希望对大家有所帮助. 我们看到对变量的讲解的时候看到很多概念,属性,存储期,内部链接,外部链接,空链接,全局变量,局部变量,寄存器变量,静态变量等等.看起来很混乱,下面我们梳理一下. 其实我们再使用变量的时候大多关心的只有三个方面:变量的存在期,变量的类型,变量的作用域. 我们想一下变量的定义方法分为三部分: <存储类别>  <变量的数据类型>   <变量名

C语言变量和变量属性

数据类型 数据类型可以理解为固定内存大小的别名. 数据类型是创建变量的模子. 1byte char 2byte short 4byte int 变量本质 变量是一段实际连续存储空间的别名. 程序中通过变量来申请并命名存储空间. 通过变量的名字可以使用存储空间. --------------------------------------------------------------- C语言中的变量可以有自己的属性. 在定义变量的时候可以加上 "属性" 关键字. "属性&q