C++ 指针和const

文章概述

  1. 指向常量的指针
  2. 常量指针
  3. 顶层const和底层const

指向常量的指针

a. 指向常量的指针通过实例说明:

//其中b就是指向常量的指针
const int a = 10;
const int*b =&a; 

b. 指向常量的指针表示的是不能通过指针改变指针所指向的对象,并没有规定指向的对象是否是常量和指向的对象不能通过别的途径改变。

int a =20;
//b指向的是a的地址
const int *b =&a;
//a的值发生了变化
a=30;
(只不过不能通过b改变a的值)

c. 指针的类型必须与其所指向的对象的类型相同。但是指向常量的指针可以指向一个非常量的对象。

int a = 10;
//指针的类型与所指向对象的类型相同
int *b=&a; 
//定义了常量
const int c =20;
//定义指向常量的指针,指向常量c
const int*d =&c;
//指向常量的指针d可以指向a
d=&a;

常量指针

a. 指针不同于引用,引用是别名。但是指针确是一个对象,可以把指针本身定义为常量。常量指针(和常量,常量引用一样)必须初始化,一旦初始化完成,指针的值(存放在指针的地址)不会发生改变。
b. 常量指针的格式:

int a =5;
//常量指针的格式是int const* b;
int *const b = &a;

c. 常量指针表示的是指针本身的值不会放生改变(一直指向初始化指向的对象),但是可以通过常量指针改变所指向的对象的值。

int a =8;
int *const b =&a;
//这时改变了a的值
(*)b=10;

顶层const和底层const

a. 顶层const:表示的是对象本身为常量。

//const:表示的是顶层const,a是常量
const int a=20;
//const: 表示的是顶层const,c是常量指针
int b = 10;
int *const c = &b;

b. 底层const: 表示的是指针指向的对象是常量或者引用绑定的对象是常量。

//底层const,引用a绑定的对象是常量
const int &a =10;
//底层const,指针c指向的是对象是常量
int b = 20;
const int *c =&b; 

(其实做题的时候,总的记着非常量可以转换为常量,具体问题具体分析)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值