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 *)&m_A;//会分配内存
    }
 2.extern编译器也会给const变量分配内存
 3.用普通变量初始化const的变量
    void test02(){
        int a=10;
        const int b=a;//会分配内存就可以改const的值
        
        int *p=(int *)&b;
        *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 *)&p1;
    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;








