const本质——修饰的值能不能改?

开门见山的说:可以改,const修饰的变量不管是指针变量,引用,还是普通变量都可以通过某种方式修改,但是极为不推荐。
const本质是修饰变量属性是一个只读的变量属性,而不是常量。

const定义的变量本质还是变量是可变的,不是常量。

const修饰的变量只是告诉编译器改变量不能出现在赋值符号的左边。

  1. 在C语言中,使用const关键字修饰的变量被视为只读变量,不允许修改其值。虽然C语言中可以使用类型转换来绕过编译器的限制,但这是一种不安全的行为,可能引发潜在的错误。

  2. 相比之下,C++语言中的const修饰符更加严格。在C++中,使用const修饰的变量也被视为只读,不允许直接修改其值。与C语言不同的是,C++对于试图修改const变量的行为有更为严格的限制,编译器会发出错误提示。

  3. 需要注意的是,尽管C++对const的处理更严格,但仍然存在一些特殊情况下可以修改const变量值的方法,例如通过const_cast进行类型转换、使用mutable关键字等,但这些方法通常不推荐使用,应保持const变量的只读性。

#include<stdio.h>

int main()
{

    const int num = 0;

    int* p = &num;

    *p = 2;

    printf("%d",num);

}

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    const int num = 0;

    int* p = &num;

    *p = 2;

    cout << num;
}

请添加图片描述
在这里插入图片描述
可以提出大胆的假设:如果代码的逻辑完全相同,则语言表达出的内容与编译器和编译环境无关,只与语言本身的特性有关。

结论:就是C++给编译器下了命令,告诉他不可以这样改。C语言更自由,没有限制指针的方式。C++兼容了C的特点,加强了对数据的维护。

所以无论是C还是C++,const修饰的变量都应该被视为常量,书写道德上不能被修改,理论上也不建议修改。(本质上可以通过极端的方式修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卷同學

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值