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

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

相关推荐
Pafey4 分钟前
VS2022 + Qt5.9 中文乱码/项目设置utf-8编码
c++·qt·中文乱码
minji...16 分钟前
C++ STL之list的使用
开发语言·c++
青草地溪水旁39 分钟前
23 种设计模式
开发语言·c++·设计模式
Want5951 小时前
C/C++圣诞树②
c语言·c++·算法
天天代码码天天2 小时前
基于海康SDK的C++实时视频流逐帧抓取存图小工具
c++·海康sdk·逐帧抓图
沐怡旸2 小时前
【底层机制】稀疏文件--是什么、为什么、好在哪、实现机制
c++·面试
向依阳2 小时前
C++:类和对象
c++·类和对象
oioihoii3 小时前
构造函数和析构函数中的多态陷阱:C++的隐秘角落
java·开发语言·c++
小欣加油4 小时前
leetcode LCR 170.交易逆序对的总数
数据结构·c++·算法·leetcode·职场和发展·排序算法
focksorCr4 小时前
编译缓存工具 sccache 效果对比
c++·缓存·rust