0
点赞
收藏
分享

微信扫一扫

const

凛冬已至夏日未远 2022-02-28 阅读 76
CC++C/C++

const的作用:


    1.定义常量,具有不可变性;
    2.便于进行类型检查,使编译器对处理内容有更多的了解,消除了一些隐患。
    3.避免意义模糊的数字出现,便于进行参数的调整修改。
    4.可以保护被修饰的东西,防止意外修改,增强程序的健壮性。
    5.可以节省空间,避免不必要的内存分配。
    6.提高效率,存在符号表中,没有储存和读内存的操作。

C语言中const默认外部链接,C++默认内部链接

C语言:
test.c

    const int a = 10;//C语言中默认const外部链接


main.c 

    extern const int a;
    printf("a=%d\n",a);


    
C++中:
test.cpp

    const int a = 10;//C++中默认const内部链接
    extern const int a = 10;//extern提高作用域后就可以


main.c 

    extern const int a;//无法解析外部变量


    
const 分配内存情况   


1.const分配内存,取地址会分配临时内存

    void test01(){
        const int m_A=10;
        int *p=(int *)//会分配内存
    }


2.extern编译器也会给const变量分配内存
3.用普通变量初始化const的变量

    void test02(){
        int a=10;
        const int b=a;//会分配内存就可以改const的值
        
        int *p=(int *)
        *p=1000;
        
        cout<<"b="<<b<<endl;//1000
    }


4.自定义数据类型 加const也会分配内存

strut Person{
    string m_Name;//姓名
    int m_Age;
}
void test03(){
    const Person p1;
    
    p1.m_Name="德玛西亚";//这样修改不允许
    
    Person * p=(Person *)
    p->name="德玛西亚";
    (*p).m_Age=18;
    
    cout<<"Name:"<<p1.m_Name<<" Age:"<<p1.m_Age<<endl;
}

--------------------------------------------------------
尽量用const替代#define
    宏定义的变量从未被编译器看到过,因为在预处理阶段已经将宏替代。宏定义没有类型,没有作用域。

    #define max 1024
    const int max=1024;
举报

相关推荐

0 条评论