一般情况下 , 变量的值是存储在内存中的 , CPU 每次使用数据都要从内存中读取 。 如果有一些变量使用非常频
繁 , 从内存中读取就会消耗很多时间 , 例如 for 循环中的增量控制 :
关于寄存器变量有以下需要注意
1 ) 为寄存器变量分配寄是动态完成的 , 因此 , 只有局部变量和形式参数才能定义为寄存器变量 。
2 ) 局部静态变量不能定义为寄存器变量 , 因为一个变量只能声明为一种存储类别 。static和register不能一起用。
3 ) 寄存器的长度一般和机器的字长一致 , 只有较短的类型如 int 、 char 、 short等才适合定义为寄存器变量 , 诸
如 double 等较大的类型 , 不推荐将其定义为寄存器类型 。
4 ) CPU 的寄存器数目有限 , 即使定义了寄存器变量 , 编译器可能并不真正为其分配寄存器 , 而是将其当做普通
的 auto 变量来对待 , 为其分配栈内存 。 当然 , 有些优秀的编译器 , 能自动识别使用频繁的变量 , 如循环控制变
量等 , 在有可用的寄存器时 , 即使没有使用 register 关键字 , 也自动为其分配寄存器 , 无须由程序员来指定 。
文章讲述了寄存器变量的概念,强调它们用于提高频繁访问变量的效率。寄存器变量主要应用于局部变量和形式参数,但实际是否分配寄存器由编译器决定。尽管可以尝试用register关键字指定,但编译器可能仍将其存储在栈上。高效的编译器能自动识别并优化循环控制变量的存储位置。
1946

被折叠的 条评论
为什么被折叠?



