04_实用性加强_register增强_检测增强

/*
    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;

#if 1
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);
}

#endif

猜你喜欢

转载自blog.csdn.net/WUZHU2017/article/details/81123185
04_