保护措施

        为了解决指针可能误修改或破坏内存中的数据,可以对内存中的数据加上写保护。即具有这种属性的指针只能够读出内存中的数据,却不能修改内存中的数据。把具有这种属性的指针称为指向常量的指针,简称常量指针

        给内存中的数据加写保护的方法是在声明指针时,在指针类型(即各种数据类型)前加上const,表示这些数据是常量,只能读不能写。比如:const int* iptr=&a ;,这时候就只能够通过指针iptr读出内存里的数据,但是不能对其写入或是修改。

        当然,这样的保护措施只是防止通过间接引用iptr修改内存中的数据,并不保护iptr本身和iptr所指向的变量。

        指针常量常量指针不同,指针常量是指所指向的位置不能改变,即指针本身是一个常量。但是指针常量可以通过间接引用修改内存中的数据。比如:int* const iptr=&a

        常量指针常量,既不能间接引用修改数据,也不能指向别的变量或常量。比如:const int* const iptr=&a;

 

int a=42;

const int b=84;

 

const int* captr=&a;  //常量指针

int* const acptr=&a;  //指针常量

int* bptr=&b;  //错误,不能把常量的地址给指针变量

const int *cbprt=&b;  //正确,把常量的地址给常量指针是允许的

 

*captr=68;  //错误,间接引用常量指针不可修改内存中的数据

*acptr=68;  //正确,间接引用指针常量可以修改内存中的数据

 

captr=&b;   //正确,常量指针可以指向其他变量

acptr=&b;   //错误,指针常量不能指向别的变量

 

const int * const ccaptr=&a;// 常量指针常量

*ccaptr=68;   //错误,常量指针常量不能间接引用修改数据

ccaptr=&b;   //错误,常量指针常量不能指向别的常量或变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值