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;
}

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

相关推荐
一只小bit1 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++
沐泽Mu2 小时前
嵌入式学习-QT-Day05
开发语言·c++·qt·学习
szuzhan.gy3 小时前
DS查找—二叉树平衡因子
数据结构·c++·算法
火云洞红孩儿4 小时前
基于AI IDE 打造快速化的游戏LUA脚本的生成系统
c++·人工智能·inscode·游戏引擎·lua·游戏开发·脚本系统
FeboReigns5 小时前
C++简明教程(4)(Hello World)
c语言·c++
FeboReigns5 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++
zh路西法5 小时前
【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(二):从FSM开始的2D游戏角色操控底层源码编写
c++·游戏·unity·设计模式·状态模式
.Vcoistnt5 小时前
Codeforces Round 994 (Div. 2)(A-D)
数据结构·c++·算法·贪心算法·动态规划
小k_不小6 小时前
C++面试八股文:指针与引用的区别
c++·面试
沐泽Mu6 小时前
嵌入式学习-QT-Day07
c++·qt·学习·命令模式