1 register关键字
对于register关键字:
- register关键字只能作用于局部变量,不能作用于全局变量。
- register关键字指明将局部变量存储于寄存器中。
- register只是请求寄存器变量,但不一定请求成功。
- register变量的必须是CPU寄存器可以接受的值。
- 不能用&运算符获取register变量的地址。

2 C++中的register关键字
register关键字请求编译器将局部变量存储于寄存器中,在C++中依然支持register关键字(存在的目的就是为了兼容C语言)。
C++编译器有自己的优化方式:
- C语言中无法获取register变量的地址。
- C++中可以取得register变量的地址。
C++中的register关键字:
- C++编译器发现程序中需要register变量的地址时,register对变量的声明变得无效(早期的做法,register对于现在的编译器来说形同虚设)。
- 早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。
注意:在任何情况下,都不可能取得一个寄存器的地址,因为地址都是针对内存来说的,不是针对寄存器来说的。
参考资料:
本文详细解析了C++与C语言中的register关键字的使用与限制,包括其作用于局部变量、存储于寄存器的请求、对现代编译器优化的影响以及与地址获取的关系。
1906

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



