c语言关键字之寄存器变量register

c语言关键字之寄存器变量register

register    在C语言中存储类型说明符register修饰变量时,暗示程序中相应的变量将经常被使用,如果可能的话将其保存在CPU的寄存器中,以此加快存储速度。
register建议编译器将相应变量存放在寄存器中,通常我们将使用最频繁的变量定义为register类型,因为寄存器的数量有限,所以有可能并不会将其放入寄存器中,但是编译器并不会显示错误。

注意事项:

  • 寄存器变量分配寄存器是动态完成的,只有局部变量和形式参数才能定义为寄存器变量
  • 因为一个变量只能声明一种存储类型,所以局部静态变量以及模块内全局变量不能定义为寄存器变量
  • 寄存器的长度一般和机器的字长一致,所以其长度应该小于或等于整型的长度,register必须是能被CPU所接受的类型
  • 因为register声明的变量是放在寄存器中的,可能不存放在内存中,所以不能对其声明的变量进行取地址‘&’操作

许多的编译器会忽略register修饰符,尽管完全合法,但它仅仅是暗示而不是指令,真正起作用的register修饰符数目和类型都依赖与运行程序的机器,而任何多余的register修饰符都将被程序所省略

寄存器

寄存器的数量与缓存的容量都是有限的,虽然速度快但是价格也相对较高

如果频繁的操作内存中的同一数据会影响速度,所以频繁使用的变量一般会先放入缓存中,寄存器从中拿取数据,对于使用不频繁的数据,寄存器会绕过缓存,直接从内存中拿取,所以不是每次都能从缓存中拿到数据


猜你喜欢

转载自blog.csdn.net/m_jianjianjiao/article/details/80149790