register关键字请求编译器让变量x直接放在寄存器里面,速度快。而在c语言中,register修饰的变量不能取地址,但是在c++里面做了内容:
1、register关键字的变化:
(1)register关键字请求“编译器”将局部变量存储于寄存器中 ,C语言中无法取得register变量地址,C++中可以取得register变量的地址 。
(2)在C++中依然支持register关键字,C++编译器有自己的优化方式,不使用register也可能做优化
(3)C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
#include <iostream>
using namespace std;
int main(){
register int a = 0;
printf("&a: %d \n", &a); //不能在寄存器变量上取地址
for (int i = 0; i<1000; i++) //不使用register也可能做优化
{
printf("i:%d \n", i);
}
return 0;
}