对于基础类型直接赋值
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对象赋值
void test01(){
int a =10;
const int data=a;
int *p = (int *)&data;
cout<<"data="<<data<<endl;
*p = 2000;
cout<<"after data="<<data;
}
用变量为其赋值,则会开辟空间,而不是放入符号表中,则可以通过指针修改。
自定义类型(结构体、类)
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;
}
文章来源:https://www.toymoban.com/news/detail-837475.html
对自定义类型则直接开辟内存。通过修改指针可以对其修改。文章来源地址https://www.toymoban.com/news/detail-837475.html
到了这里,关于c++ 中const的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!