const变量定义后能被修改吗?可以

本文深入解析C++中的文字常量与常变量概念,包括它们的特点、使用场景及如何在程序中正确操作const变量的值。通过实例演示了尽管在语法上限制修改const变量,但在运行时仍可通过地址修改其值。

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

文字常量和常变量

常量可以直观的理解为“值不可改变的量”。在C++中,常量分为文字常量和常变量

文字常量

文字常量又称为“符号常量”,经编译之后写在代码区,是不可寻址的。而常变量同其它变量一样被分配空间,是可以寻址的

文字常量包括数值常量、字符常量和符号常量,其特点就是编译后写在代码区,不可寻址,不可更改

程序中有些特殊的标识符或表达式由于满足文字常量的两个条件:不可寻址、不可改变,也可以将它们视为文字常量。它们分别是:静态数组名、枚举常量、全局(静态)变量首地址

常变量

如果一个常量在定义它的时候就给他赋初值,且此后它的值就不能被改变,那么这个变量就是常变量

常变量由普通变量前添加const关键字来定义

常变量的值在赋值后不能被改变并不是真的不能改变,而是对于高级语言语法上的限制,实际上常变量在运行时并不是存放在只读内存区,因此只要在程序运行时获取到变量的地址,即可对其进行修改

修改const变量的值

具体代码如下:

#include <iostream>
using namespace std;

void showValue(const int &val)
{
    cout << val << endl;
}

int main()
{
    const int val = 10;
    int *ptr;
    void *p = (void *)&val;

    ptr = (int *)p;
    (*ptr)++;

    showValue(val);
    return 0;
}

如上所示,只需获取val的地址,即可对其进行修改

文章内容参考自:C++高级进阶教程(陈刚)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值