C++中的 const 引用及 const 指针

const 对象必须初始化

const 对象仅在文件内有效;

要想在多个文件中使用该 const 对象,需要在一个文件中定义,在其他多个文件中声明该 const 变量(定义和声明都添加extern 关键词);

const 的引用只有一种类型即 const + 类型 + &r(只能是底层const)

const 引用必须初始化,初始化时允许绑定非常量的对象,字面值以及表达式;

也就是说 const 引用可能引用一个非 const 的对象,此时,不能通过该 const 引用来修改对象的值;

const指针有三种类型:1)const + 类型 + *p(底层const)

                                      2)类型 + *const p(顶层const)

                                      3)const + 类型 + *const p

其中,2)、3)必须初始化

1)表示指向常量的指针,可以指向一个非常量的对象,无法通过该指针改变所指变量的值,但是可以改变指针指向的对象;

int i = 0; 
const int *p1 = &i;
// 表示不能通过该指针改变变量 i 的值,不代表变量 i 的值不能被改变

const int j = 0;
const int *p2 = &j;
// 表示不能通过该指针改变变量 j 的值,且变量 j 的值不能被改变

p1 = &j;
// 指针仍可以改变所指对象

2)表示常量指针,说明指针是一个常量,也就是存放在指针中的那个地址无法改变(该指针无法指向别的变量),但是指向的值是可以改变的(指向的变量为非 const 时);

int i  = 0, j = 100;
int *const p = &i;
*p = j;  // 可以通过指针改变变量 i 的值
p = &j;  // 不可以改变 p 中存放的地址

const int i = 0;
int *const q = &i; // 此时不可以通过指针改变 i 的值, i 为常量

3)表示指向常量对象的常量指针,指针中存放的地址和指针所指向的值都不可以改变,且必须初始化;

double val = 3.14;
const double *const p = &val; // 初始化
*p = 9.99; // 不可以, p 是一个指向常量的指针,无法通过该指针改变指向的值
double dval = 1.314;
p = &dval; // 不可以,p是常量指针,指针中存放的地址不可以改变

另外,赋值操作时,常量指针可以赋值给普通指针,普通指针无法赋值给常量指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值