const

本文详细探讨了C/C++中const关键字的作用,包括定义不可变变量、类型检查、参数调整、程序健壮性和内存效率。讲解了const在C和C++中的不同链接行为,并剖析了const变量的内存分配原理,以及如何替代宏定义以提升代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值