const在c和c++中

本文探讨了C/C++中const关键字的异同。在C++中,const修饰的变量若以常量初始化,则存储在符号常量表,不可取地址修改。若取地址,会新开辟空间,但仍然不能直接修改。通过类型转换可以在C++中改变const变量的值。文章建议尽量用const替换#define,因为const具备类型检查和作用域限制,更安全且易于维护。
摘要由CSDN通过智能技术生成
CONST在c/c++中异同
C(待补充,暂认为相同)
C++1.修饰普通变量,并以常量初始化时,变量会存放在符号常量表里(属于代码段,不可取地址)2.如果对其取地址,会再为它开辟空间3.以变量初始化则不会放在符号常量表
#include <stdio.h>
#include<stdlib.h>


int main(int argc, char* argv[])
{
    const int a = 10;

    printf("a=%d\n",a);
    printf("a的地址=%p\n",&a);

    //虽然为a开辟了空间,但还是不可以修改
    //a = 20;

    //除非采用隐式转换(在c++中采用强转)
    int* p = &a;
    *p = 20;
    printf("%d\n",a);
    return 0;
}

补充:
尽量用const替换define?
1.const有类型,可进行编译器类型安全检查。#defifine无类型,不可进行类型检查.
2.const有作用域,而#define不重视作用域,默认定义处到文件结尾.如果定义在指定作用域下有效的常量,那么#define就不能用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值