疫情所迫,希望用这种方法督促自己坚持学习。同时记录在找工作过程中的艰辛不易。博客内容持续增减修改,都为摘录和个人理解。欢迎各位批评指正其中错误,相互勉励,共同进步。
一、const 定义和初始化
在代码中,我们希望有些变量为常值,不能为其赋值,例如为某个数据分配固定大小的内存,这时就要用到const限定符。其常见的定义和初始化方式如下:
int i = 10;
const int j = i; //为int型常量赋给i的值
const int k = 10; //为int型常量赋值10
const int s; //错误,常量类型必须有初始化值
k = 100; //错误,常量类型值不能修改
值得注意的是,在默认情况下,const类型仅在当前文件中有效,不能被其他文件调用。如果需要被其他文件调用,则无论在声明还是定义时都需要加入关键字 “extern”。
//在头文件中声明
extern const int size;
//在其他文件调用并初始化
extern const int size = get_size();
因此,如果想在多个文件中共享const变量,就必须加上关键字“extern”
二、const的引用
把引用绑定到const对象上,称之为对常量的引用。因此常量引用不能用来修改其绑定的const对象的值。
const int a = 10; //定义int型常量a
const int &b = a; //b为a的引用
int c = a; //错误,用非常量引用来引用一个常量值
b = 100; //错误,不能通过引用来改变常量的值
const 的引用,可以引用一个非const的对象
int a = 10;
const int &b = a; //常量引用b引用非常量对象a
cout << a << " " << b << endl; //输出为10 10
a = 100;
cout << a << " " << b << endl; //输出为100 100
b = 20; //错误, 常量引用不能修改其中的值
三、const和指针
首先,我们需要区分两个定义。一是指向常量的指针,另外一个是常量指针。
//下面是指向常量的指针的一段示例代码
const int num = 10;
const int *p1 = # //指向常量的指针
int *p2 = # //错误,不能用普通指针指向一个常量
*p1 = 100; //错误,不能改变常量指针指向对象的值
常量指针表示所存储的指向对象的地址不能改变,而所指向对象的值在非常量的情况下是可以改变的。
double pi = 3.14;
double *const p1 = π
const double *const p2 = π
来源:CSDN
作者:sgl_dhu
链接:https://blog.csdn.net/SGL_LGS/article/details/104672537