首先一点就是它的存取速度比普通的自动变量要快。另外,C++11也说这个就是明确表明你要使用一个自动变量,这是咋回事呢?这是因为有可能同名的变量是一个外部变量,这又说明了什么呢?我不知道这说明了什么,但是经过查一些网页的资料,我知道auto已经不是自动变量的明确声明了,取而代之的是register。再换句话说就是register变量一定是自动变量,但是auto变量不一定是自动变量了。
它不能用于全局变量。
当register用于局部变量时,就无法再使用解引用操作符&了,这很简单,因为它已经不在内存中了嘛。
并且只对32位CPU有效。
正是由于register只能用于auto类型变量,那么它便有一个明确代表被register修饰的变量确实是自动变量的意义。
更重要的原因是避免已经使用register关键字的代码失效。这个有点难理解,我想大概是声明的register变量在前面,此后再用到该变量的时候,它可能不再存储在寄存器当中了的意思。