c++primer 第五版 指向常量的指针和常量指针

来源:互联网 发布:eclipse java开发教程 编辑:程序博客网 时间:2024/06/05 21:17

c++ primer中对于“常量指针”的定义和网上的版本相反,而且删去了"指针常量"的概念,引入了一个新的概念——"指向常量的指针”,但各种类型的含义还是一致的,只是叫法不一样了。举例:

int a;const int *p = &a;//与int const* p = &a等效,只取决于*和const的相对位置
表示的是“指向常量的指针”,普遍的叫法是“常量指针”。

这是指针p指向的对象是一个整型常量,指向的对象是不可以改变的,但对指针p本身并没有限制,p的值可以改变,也就是可以指向新的对象。

修改:上一句“指向的对象是不可以改变的”这句话有失偏颇,“指向常量的指针,不过是指针‘自以为是’罢了,它们觉得自己指向了常量,仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径改变。”(同样适用于常量引用)


int a = 0;int *const p = &a;
按照c++primer 第五版的定义,p是一个“常量指针”,这里与网上普遍的说法也不一样,那里叫“指针常量”。

const紧挨着p表示p的值不可改变,即p始终指向a。但是指向的对象的值能否改变依赖于对象本身的类型,这里的a非常量,a的值是可以改变的。




0 0
原创粉丝点击