register :这个关键字建议编译器尽可能的将变量存在cpu内部寄存器中而不是通过内存寻址访问以提高效率
int main()
{
int i = 0;
int n = 1000;
register int c = 0; // 建议将c放进cpu的某个寄存器中
for (i = 0; i < n; i++)
{
c++;
}
return 0;
}
几点限制:
1 register变量必须是能被cpu所接受的类型(这个变量一般是单个值,且长度小于或等于整型的长度,有些寄存器不能放浮点数)
2 register 变量可能不存放在内存中,所以不能用&来取地址
3 只有局部变量和形式参数可以作为寄存器变量,全局变量不行(因为会一直占着寄存器,局部变量用完就释放了)
4 静态局部变量不能定义为寄存器变量
5 寄存器数量有限,不能定义多个,并且起不起作用看编译器(因为只是建议)
cpu 寄存器 32位来说
通用寄存器 32 4字节
eax
ebx
ecx
edx
要存放结构体变量就不能建议,因为超过了cpu字节大小