/*
1、实用性增强
C语言中的变量都必须在作用域开始的位置定义!!
C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。
2、register 关键字
register关键字 请求编译器让变量a直接放在寄存器里面,速度快
在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容
C语言中无法取得register变量地址
在C++中依然支持register关键字
C++编译器有自己的优化方式,不使用register也可能做优化
C++编译器发现程序中需要取register变量的地址时,register对变量
的声明变得无效。
早期C语言编译器不会对代码进行优化,因此register变量是一个很好
的补充。
C++中可以取得register变量的地址
3、变量的检测性增强
在C语言中,重复定义多个同名的全局变量是合法的
在C++中,不允许定义多个同名的全局变量
C语言中多个同名的全局变量最终会被链接到全局
数据区的同一个地址空间上
int g_var;
int g_var = 1;
C++直接拒绝这种二义性的做法
*/
//int g_a;
int g_a = 100;
void test()
{
int i = 0;
printf("111111...\n");
int k;
i = 10;
k = 11;
printf("i:%d k:%d \n", i, k);
register int j;
printf("&j = %p\n", &j);
/*
//不使用register也可能做优化,
像i频繁使用的情况下,c++编译器会做优化
c++编译器会把i放在寄存器里面,加快执行速度
*/
for (int i = 0; i<1000; i++)
{
printf("i:%d \n", i);
}
printf("g_a = %d\n", g_a);
}