话说const
主要用例:
const int a; int const a; 这两个写法是等同的,表示a是一个int常量。
int const a=3;//a的值不可改变
const int a=3;//a的值不可改变
int const * a;是定义一个地址常量 你不能修改它的地址 但是可以修改它指向的变量。
int const* a = &x; //a不能改变引用对象
const int * a;是定义一个int型指针常量 你不能修改它的值 但是可以修改它的地址。
const int *a = &x; //*a不能对x赋值
int * const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。
int *const a=x;//不能改变a指向的地址
int const * const a; 表示a是一个指针常量(即指向整形常量的常量指针),初始化的时候必须固定指向一个int常量或者int变量,之后就不能再指向别的地方了,它总是把它所指向的目标当作一个int常量。也可以写成const int* const a;含义相同。
int const * const a=x;
const int& x;和 int const &x;前者表示此引用所代表的int类型变量无法使用此引用修改。后者表示此引用所代表的是const int类型变量,同样也无法用此引。
const int& a;int const &a;
1、const 对象的地址只能赋值给指向const 对象的指针
2、指向const 对象的指针可以 被赋 以 一个非const 对象的地址
3、指向const 的指针常被用作函数的形式参数,保证被传递给函数的实际对象在函数得实际对象在函数中不会被修改
4、常量在定义后就不能被修改,所以它必须被初始化。未初始化的常量定义将导致编译错误(上面都是在说明const得问题,所以没有赋值,实际语句中要赋值的)。
C/C++——const用法完整总结
https://blog.csdn.net/Linux_ever/article/details/51344535