07-寄存器变量
12.1.5 寄存器变量
变量通常存储在计算机内存中。如果幸运的话,寄存器变量存储在CPU的寄存器中,或者概括地说,存储在最快的可用内存中。与普通变量相比,访问和处理这些变量的速度更快。由于寄存器变量存储在寄存器而非内存中,所以无法获取寄存器变量的地址。绝大多数方面,寄存器变量和自动变量都一样。也就是说,它们都是块作用域、无链接和自动存储期。使用存储类别说明符 register 便可声明寄存器变量:
int main(void)
{
register int quick;
我们刚才说“如果幸运的话”,是因为声明变量为 register 类别与直接命令相比更像是一种请求。编译器必须根据寄存器或最快可用内存的数量衡量你的请求,或者直接忽略你的请求,所以可能不会如你所愿。在这种情况下,寄存器变量就变成普通的自动变量。即使是这样,仍然不能对该变量使用地址运算符。
在函数头中使用关键字 register ,便可请求形参是寄存器变量:
void macho(register int n)
可声明为 register 的数据类型有限。例如,处理器中的寄存器可能没有足够大的空间来存储 double 类型的值。