C++ const限定符相关知识小结

本文深入探讨了C++中const限定符的使用,包括const变量的定义与初始化,const引用的特点与应用,以及const与指针的结合使用。通过实例讲解了如何正确使用const来提高代码质量和安全性。

疫情所迫,希望用这种方法督促自己坚持学习。同时记录在找工作过程中的艰辛不易。博客内容持续增减修改,都为摘录和个人理解。欢迎各位批评指正其中错误,相互勉励,共同进步。

一、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 = &num;      //指向常量的指针
int *p2 = &num;            //错误,不能用普通指针指向一个常量
*p1 = 100;                 //错误,不能改变常量指针指向对象的值

常量指针表示所存储的指向对象的地址不能改变,而所指向对象的值在非常量的情况下是可以改变的。

double pi = 3.14;
double *const p1 = &pi;
const double *const p2 = &pi;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值