const与指针

来源:互联网 发布:淘宝认证复核在哪里 编辑:程序博客网 时间:2024/05/16 23:54

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的值的行为是合法的。

1 0
原创粉丝点击