1.定义 赋值.
const int buf = 512; // buf 的值 不能再改变
所以 buf 在定义时 必须被 初始化;其初始值也可以是 函数的调用 const int i=get();
也可以用相同类型的对象 来初始化。
2.常量引用
const 的引用----常量引用 引用和 对象都为常量
const int c1 =1024
const int &b1=c1;//const引用只读不可修改
//与绑定对象是否为const无关。
如果是对一个常量进行引用,则编译器 首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。用户不能访问它。
const int &ri = dval;
编译器将其转换为:
int tmp = dval; //double -> int
const int &ri = tmp;
const引用表示,试图通过此引用去(间接)改变其引用的对象的值时,编译器会报错!
不能通过常量引用改变所引用的对象的值,但可以直接改变对象的值。
3.内连接
在 C++ 中 const 默认为static const 为内连接 只在文件内有效
在 C中 const 默认为 extern const 为外连接 可以再其他文件中访问
4.指针
const int * pOne;
int a=0;
pOne=&a;
// const 限制 int * *是对指针的取值 则 所指向的值不可改。但可以改变指针内存储的地址的值,
就是可以改变指针所指的对象,对象的值不能改。
//指向整形常量 的指针,
它指向的值不能修改
int * const pTwo; //const 右边为指针 指针内为对象地址 则对象地址不可改
//指向整形的常量指针 ,
它不能在指向别的变量,
但指向(变量)的值可以修改。
const int *const pThree;
//指向整形常量 的常量指针
。它既不能再指向别的常量,指向的值也不能修改。
看const的右边是什么 则const 限制什么