对于基础类型直接赋值
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;
}
对自定义类型则直接开辟内存。通过修改指针可以对其修改。