const修饰指针变量

前言

在指针的学习中,const算是一个十分重要的知识点,但大部分的人在初学时都是对它一知半解,只是浅浅地记一下它的作用,没有深入了解,但在以后的学习中,从内存上深层次地理解const是如何修饰指针变量还是很有必要的。

1.const修饰变量

const翻译是常量的意思,先以一个普通常量来观察const的作用,如图:

对比两张图不难看出,被const修饰过的变量a无法被修改,这就是const的作用了:

通过在变量前面加 "const" 关键字,可以将该变量声明为常量,也就是说不允许对它进行修改。但是被const修饰过后,语法上a被声明为一个常量,但a的本质还是变量,只不过被const修饰过后,a具有了常属性,所以才不能被修改,因此通常我们也将a这一类的变量称为:常变量

2.const修饰指针变量

知道const的作用后,先来看一段简单代码:

先弄清楚p,&p,a之间的关系。看图:

总结一下,

p (指针变量):1.有自己的地址;2.有自己的空间;3.自己空间里存放的是a的地址;

a(变量):1.有自己的地址;2.有自己的空间;3.自己空间里存放的是a的值;

*p:p指向的空间(a的空间);

知道这些后,再来看const修饰指针变量的3种情况:

1)const修饰*p(const在*的左边)

这两种情况是一样的,都是在*的左边。此时const的作用是修饰*p,也就是说,*p被修饰后,无法通过p来改变p指向空间的内容。

对比:

无const:

有const:

此时*p,也就是p指向的空间(a的空间)被固定了,无法通过改变*p来改变a的值。但是p(指针变量)是不受限制的,如:

也就是说,p(指针变量)的空间里可以存放不同的地址,也就是p可以指向不同的空间,但无法通过p来改变p指向空间里的内容。

2)const修饰p(const在*的右边)

const修饰p就是与const修饰*p反着来:

p的空间里只能存放a的地址,但是可以通过p来改变a的值。

看图:

const修饰p后:

(1) 只能存放a的地址

(2)可以通过p来改变a的值:

3)const既修饰*p又修饰p(既在*的左边又在*的右边)

也没什么好说的,就是两个合并:

p的空间里既只能存放a的地址,又无法通过p来改变p指向空间里的内容(a的值)。

看图:

3.完结撒花,不要白嫖栓Q

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值