c09const内存分配情况.cpp
#include <iostream>
#include <string.h>
using namespace std;
struct students09
{
int age;
string name;
};
int main(void)
{
// 1.对const变量取地址,会分配临时内存
/*const int a = 10;
int* p = (int*)&a;
cout << *p << endl;
cout << &a << endl;
cout << &p << endl;*/
// // 2.只用普通变量,初始化const变量,分配了内存,可以间接修改
// int a = 10;
// const int b = a; // 分配了内存,可以间接修改
// int* p = (int*) & b;
// *p = 100;
// cout << "b:" << b << endl;
// int a = 10;
// const int b = 10; // 没有分配内存,无法修改
// int* p = (int*)&b;
// *p = 100;
// cout << "b:"<< b << endl; // 10
// 3.自定义数据类型的内存分配:可以间接修改,分配了内存空间
const students09 stu = {18, "张三"}; // 结构体常量,必须初始化
// stu.age = 20; // 不可以直接被修改
students09* p = (students09*)&stu;
// 间接修改是可以的,因为给分配了内存空间
p->age = 20;
// (*p).age = 20;
p->name = "李四";
// (*p).name = "李四";
cout << "姓名:" << p->name<< " " << "年龄:" << p->age << endl;
return 0;
}