fun_cpp.cpp
//const修饰的全局变量 默认是内部链接(只在当前源文件有效 不能直接用于其他源文件)
const int num_pp = 100;//如果必须用在其他源文件 使用只读的全局变量 必须加extern将num转换成外部链接
//extern const int num_pp = 100;
main_cpp.cpp
#include<iostream>
//声明
extern const int num_pp;
using namespace std;
int main()
{//cout<<"全局num_pp = "<<num_pp<<endl;//err 不识别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 2000cout<<"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 3000cout<<"a = "<<a <<endl;//OK 3000return 0;
}