万恶之源---指针<第三弹>

本文详细解释了如何使用const修饰指针,包括常量指针的原理、绕过const的方法以及const修饰指针变量的不同情况,强调了const在限制指针操作中的作用。

前言

在上一篇文章当中,我们讲到了如何规避及麻烦的野指针,我们通过对指针进行初始化,只在指针的作用域内部使用指针,在使用指针前先判断指针是否为空等方式,对野指针进行了规避,那么接下来就让我们看看,在指针这一章当中还有什么是我们需要注意的吧~~

1.使用const修饰指针

1.1用const来修饰变量

变量本身是可以被修改的。

const:常,const 变量名:那么此时这个变量就具有了常属性,即无法被修改,但其的本质仍然为变量(即内部的值仍可以通过某种方式进行修改)

const仅在语法上对其进行了限制,在对其进行修改的时候会报警告,导致变量的之无法被修改。

但const并不会改变这个空间的地址,(仍能通过之前的地址找到这个变量),只是内部的值无法改变,但仍然能作为一个变量参与各种运算。

1.2如何绕过const的作用

const的作用就好比路障,阻止直接进入

被const限制的变量,由于找不到,其的无法被直接修改,在使用赋值对于其中的数据进行覆盖的时候,编译器会发现并发出警告。

*pa,相当于通过其地址发现了另外一条路,相当于走后门。

举一个比较形象的例子,前段时间电视剧《狂飙》,当杀手想要杀死证人的时候,由于证人被警察保护起来了,一般人发现不了,无法将其直接杀死,而杀手则通过获取到的地址从而找到证人并将其杀死。

1.3 const修饰指针变量

const修饰指针变量相当于把房子的后门也给封了。 

const int a=0;

const修饰指针变量有两种形式:

1>const int*pa=&a; <==>int const *pa=&a;

①即此时const放在*以前,修饰的为变量*pa,限制的为指针(int* pa),无法由*pa的方式来修改pa所指向的空间的变量的值,”把后门关了“,

②变量pa未被限制,可以储存其他变量的地址。只是*pa无法访问其内部存储地址所指向的空间而已

#include<stdio.h>
int main()
{
	const int a = 0;
	const int b = 2;
	int const* pa = &a;
	*pa = 100;//不成立,无法修改
     pa = &b;//仍可以用来储存不同空间的地址
	*pa = 100;
	printf("%d %d ", a, b);
}

 

相当于由*pa修改在pa位置上的变量a的值的功能失效了 

2>int* const pa=&a; 此时const限制的为变量pa。

①指针变量中存储的地址就无法改变了,只能用于存放a的地址

②*pa能访问a的空间,仍可以pa来访问其所指向的对象的内容

注:

1.pa的这块空间当中存放的为地址(a的地址)

2.pa本身也为变量,自己也为一块空间,也有自己的地址 

3.*pa为p指向的那块空间

4.若const int*const pa这两个功能就都无法使用,既无法改变a,也无法用于存放其他变量的地址 

好了,今天的内容就到这咯,敬请期待我的下一篇佳作吧,😜

创作不易,欢迎点赞,收藏,关注❤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小比特newer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值