您好、欢迎来到现金彩票网!
当前位置:秒速快三 > 数据寄存器 >

寄存器变量的存储类别

发布时间:2019-07-09 21:52 来源:未知 编辑:admin

  -- 为电子工程师提供激发创新灵感的新方案、新的参考设计、新的设计构想等可下载的电子资料!

  -- 为电子工程师提供电子产品设计所需的技术分析、设计技巧、设计工具、测试工具等技术文章!

  -- 提供电子电路图,原理图,汽车电路图,手机电路图,功放电路图,电源电路图等电路图纸

  -- 全民同参与,一起动手添词条。以我们自己的名义撰写电子行业最强的开放式百科全书!

  寄存器cpu的一部分,是计算机中速度最快的存储器,分为 通用寄存器、专用寄存器、段寄存器、其他寄存器,每个寄存器存储一种类型的变量,各司其职,这样说来,又分为累加器、源变址寄存器、基址寄存器、计数寄存器、状态寄存器等等寄存器变量,顾名思义,就是存贮在寄存器里的变量。由于操作寄存器的速度远高于操作内存,但寄存器的数量有限,所以把最频繁使用的数据存储在寄存器里,有效地提高程序运行速率。C语言定义为 register int a;

  C语言的变量有4种存储类型,分别是auto(自动型)、static(静态型)、register(寄存器型)和extern(外部型)。在定义或说明一个变量时可以加上存储类型关键字,以限定其存储类别。

  存储类型决定了系统将在哪一个数据存储区为变量分配存储空间。auto型将在堆栈区分配存储空间;staTIc型将在静态数据区分配存储空间;register型将在CPU内部的寄存器中分配存储空间;而extern将不为变量分配存储空间,extern声明该变量在别的地方已经分配了存储空间。

  char ch1;/*定义了一个char型变量ch1,其存储类型默认为自动型(必须是内部变量)*/

  注意:以上auto型是对内部变量而言,对于外部变量不存在自动型的问题。内部变量自动在堆栈区分配空间。事实上,内部变量默认为自动型,所以auto限定词没有任何用处。

  静态存储就是指程序运行分配固定的存储方式,而动态存储则是在程序运行期间根据需要动态的分配存储空间。

  auto关键字就是修饰一个局部变量为自动的,每次执行到定义该变量是都会产生一个新的变量,并对其重新进行初始化。

  staTIc变量为静态变量,将函数内部和外部的变量声明成static的意义是不一致的。

  对于局部变量来说,static变量和auto变量是相对而言的。在语句块执行期间,static变量将始终保持他的值(地址不变),并且初始化操作只在第一次执行时起作用。

  register变量称为寄存器存储类变量。使用register的目的是把某个局部变量存放在计算机的某个硬件寄存器而不是内存中。这样的好处是可以提高程序的运行速度,不过这只是反映了程序员的主观意愿,实际上编辑器可以忽略register对变量的修饰。

  用户无法获得寄存器变量的地址,因为绝大多数计算机的硬件寄存器都不占用内存地址。而且即时编译器忽略了register而把变量存放在可设定的内存中,也是无法获取变量的地址的。

  如果想要有效的利用寄存器register关键字,必须向汇编语言程序员那样了解处理器的内部结构,知道可用于存放变量的寄存器数量,种类以及工作方式。但是,在不同的计算机对于这些细节可能是不同的,因此,对于一个要具备可移植的程序来说,register的作用并不大/

  extern变量称为外部存储变量.extern声明了程序中将要用到但尚未定义的外部变量。通常,外部存储类都用于声明在另一个转换单元中定义的常量。

  一个工程是由多个C文件组成的。这些源代码文件分别编译,然后链接成一个可执行模块。把这样的一个程序作为一个工程进行管理,并且生成一个工程文件来记录所包含的所有源代码文件

http://harpoolbrothers.com/shujujicunqi/674.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有