const在C与C++中的区别

本文探讨了在C和C++中const变量的存储位置和行为区别。全局const在C中存储于只读数据段,而在C++中根据情况可能分配内存。局部const在C中可通过指针间接修改,但在C++中基础类型不分配内存,自定义类型则分配。C++的const默认为内部连接,而C中默认为外部连接,需要extern声明为外部连接。

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

1、C语言中全局const变量会存储到只读数据段,C++中全局const变量声明为extern或者对变量取地址时,编译器会分配内存,变量存储在只读数据段。两个都受到了只读数据段的保护,不可修改。

const int constA = 100;
int main()
{
   
   
       int* p = (int*)&(constA);
       *p = 200;
       
       return 0;
}

运行结果:
在这里插入图片描述
以上代码在C/C++中均编译通过,但是在运行期修改constA的值时,发生写入错误,原因是修改只读数据段的数据。

2、C语言中局部const存储在堆栈区,只是不能通过变量直接修改const只读变量的值,但是可以跳过编译器的检查,通过指针间接修改const的值。

int main()
{
   
   
       const int constA = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值