c++ 中const

对于基础类型直接赋值

cpp 复制代码
void test01(){
    const int data=10;
    cout<<"data="<<data<<endl;

    int * p =(int*)&data;
    *p = 1000;

    cout<<"*p="<<*p<<endl;
    cout<<"after data="<<data;
}

c++中,对于基础类型,const 不开辟内存空间,data放在符号表中,类似于#define,但是在对data取地址的时候,系统会开辟空间,但是我们打印的时候是变量名,从符号常量表中取数据,所以可以理解为对data无影响

使用变量对const对象赋值

cpp 复制代码
void test01(){
    int a =10;
    const int data=a;

    int *p = (int *)&data;
    cout<<"data="<<data<<endl;

    *p = 2000;
    cout<<"after data="<<data;
}

用变量为其赋值,则会开辟空间,而不是放入符号表中,则可以通过指针修改。

自定义类型(结构体、类)

cpp 复制代码
struct person{
    char *name;
    int age;
}
void test01(){
    const person per ={"lucy",100};
    cout<<"name:"<<per.name<<" age:"<<per.age<<endl;

    person * p = (person*)&per;
    p->name = "yz1";
    p->age = 1000;

    cout<<"name:"<<per.name<<" age:"<<per.age<<endl;
}

对自定义类型则直接开辟内存。通过修改指针可以对其修改。

相关推荐
XFF不秃头12 分钟前
力扣刷题笔记-全排列
c++·笔记·算法·leetcode
Code Warrior1 小时前
【C++】智能指针的使用及其原理
开发语言·c++
月光在发光2 小时前
多态(虚函数核心作用原理)--C++学习(0)
c++·学习
Sunsets_Red2 小时前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
自由生长20242 小时前
从流式系统中思考-C++生态和Java生态的区别
java·c++
饕餮怪程序猿3 小时前
订单分批算法设计与实现:基于商品相似性的智能分拣优化(C++)
开发语言·c++·算法
今晚打老虎3 小时前
c++之基础A(二维数组)第四课
开发语言·c++
君义_noip4 小时前
信息学奥赛一本通 1615:【例 1】序列的第 k 个数
c++·算法·信息学奥赛·csp-s
AA陈超4 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-19.发送鼠标光标数据
c++·笔记·学习·游戏·ue5·虚幻引擎
玖剹4 小时前
哈希表相关题目
数据结构·c++·算法·leetcode·哈希算法·散列表