const与指针

本文详细解析了C++中const与指针的两种主要搭配方式:指向const的指针及const指针。前者用于禁止通过指针修改所指向的对象值,后者则用于锁定指针使其不能重新指向其他位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const与指针:

const与指针有两种不同的搭配方法:

指向const的指针:

让指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值。如:

int age = 39;
const int * pt = &age;//pt指向一个const int,因此不能使用pt来修改其值。
             //换句话说,*pt的值为const,不能被修改

//因此,下面两个做法是非法的:
*pt += 10;
cin >> *pt;

有趣的是,指针的这种声明并不代表它所指向的值就是一个不可改变的常量,只是说明对pt而言,这个值是一个常量,不可以通过pt来修改该变量,但却可以通过age变量来直接修改age的值:

*pt = 30;//错误
age = 30;//正确

另外,由于搭配的多样性,可能会有以下问题:
const的指针可以指向const变量的地址吗?
非const的指针可以指向const变量的地址吗?
对于第一个问题,答案是肯定的。因为const变量本身就不希望其值被修改,const指针恰恰符合了它的目的。
而对于第二个问题,答案是否定的,因为如果可以,将可以通过指针的方式修改const变量的值,而这与const变量的初衷相违背。

当然,还需要指出的一点是:可以将非const指针的值赋给const指针,但是不可以将const指针的值赋给非const指针。

const指针:

将指针本身声明为常量,这样可以防止改变指针指向的位置。如:

int sot = 3;
int * const pt = &sot;

这样,pt只能指向sot这个变量,而无法指向其他变量,但是通过pt来改变sot的值的行为是合法的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值