fun_cpp.cpp
//const修饰的全局变量 默认是内部链接(只在当前源文件有效 不能直接用于其他源文件)
const int num_pp = 100;
//如果必须用在其他源文件 使用只读的全局变量 必须加extern将num转换成外部链接
//extern const int num_pp = 100;
main_cpp.cpp
#include
//声明
extern const int num_pp;
using namespace std;
int main()
{
//cout<<"全局num_pp = "<
//1、c++中 对于基础类型 系统不会给data开辟空间 data放到符号表中
const int data = 10;
//data = 100;//err 只读
cout<<"data = "<<data<<endl;// ok 10
//2、c++中当 对data 取地址的时候 系统就会给data开辟空间
int *p = const_cast<int *>(&data);//(int *)&data;
*p = 2000;
cout<<"*p = "<<*p<<endl;//空间内容修改成功 ok 2000
cout<<"data = "<<data<<endl;//data OK 10,还是10为啥【符号表】?--该行为未定义,不是改变一个const常量
//2、当以变量的形式 初始化 const修饰的变量 系统会为其开辟空间
int b = 200;
const int a= b;//系统直接为a开辟空间 而不会把a放入符号表中
p = const_cast<int *>(&a);//(int *)&a;
*p = 3000;
cout<<"*p = "<<*p <<endl;//OK 3000
cout<<"a = "<<a <<endl;//OK 3000
return 0;
}