首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C/C++改变了const的值

在 C/C++ 中,const 关键字用于声明一个常量,即其值在初始化后无法更改。然而,尽管 const 变量的值不能更改,但是通过指针或引用,我们仍然可以改变指向的 const 变量的值。

以下是一个示例:

代码语言:cpp
复制
#include<iostream>

int main() {
    const int a = 10;
    int* p = const_cast<int*>(&a); // 使用 const_cast 移除 const 属性
    *p = 20; // 改变 a 的值
    std::cout << "a = " << a << std::endl; // 输出 20
    return 0;
}

在这个示例中,我们使用 const_cast 来移除 const 变量 aconst 属性,然后通过指针 p 改变了 a 的值。需要注意的是,这种做法是不安全的,因为它破坏了 const 的保证,可能导致未定义的行为。因此,在实际编程中,应该避免这种做法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

go语言中函数参数传值还是传引用的思考

算起来这些年大大小小也用过一些不同编程语言,但平时开发还是以C++为主,得益于C++精确的语义控制,我可以在编写代码的时候精准地控制每一行代码的行为,以达到预期的目的。但是C++的这种强大的语义控制,就带来了极多的概念和极大的学习成本,几乎逼着使用者不得不去了解该语言中的所有细节行为,以防出现意料之外的情况。新时代的语言如golang等,较之C++就好比美图秀秀对比photoshop(绝非贬义),同样都提供了修图的功能,但是前者屏蔽了诸多细节,更傻瓜式且易于使用,一样能达到好的效果;而后者则提供了更多专业的编辑手段,能够满足更精细化更底层的需求,但是随之而来的就是巨大的学习成本。显然两者各有优劣,但是对当今快速发展的互联网来说,以golang为代表的新时代语言更加能够适应敏捷开发的模式,比较起来,C++这些前辈还是“太重”了。

04

C语言中函数参数传递的三种方式

(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。 (2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。 (3)传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。 说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。 因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象。

01
领券