最近遇到了关于指针和const的相关问题,阅读了《C++ Primer(5th)》以及网友的博客后总结了一些方法,总结如下。 如有错误,尽情指正。
常量指针与指针常量
首先需要区分常量指针与指针常量,方法是:从右往左,遇到数据类型如"int"读作“整型”,“const”读作“常量”,“ * ”读作指向,例如下面:
const int p; //整型常量
const int *p; //指向整型常量的指针(从右往左读)
int const *p; //指向常量整型的指针(同上)
int *const p; //常量指针,指向整型
const int *const p; //常量指针,指向整型常量
int const *const p; //常量指针,指向常量整型(同上)
因此从读法上区分指针常量与常量指针就变得十分简单了。对于他们的理解可以是:
对于指针常量,被指向的对象是常量;对于常量指针,是指针本身是常量。
对于指针常量(pointer to const),借助《C++ Primer(5th)》的例子:
const double pi = 3.14; //pi是常量,不能改变
double *ptr = π // 错误,ptr仅仅是普通指针
const double *cptr = π //cptr指向了一个“对象”,这个对象是常量
*cptr = 42; //不能对cptr赋值,因为它已经是一个常量了。
double dval = 3.14; //dval可以改变
cptr = &dval; //可以通过改变dval来改变cptr
所以和常量引用一样,指向常量的指针没有规定所指向的对象必须是常量,它仅仅要求不能借助这个指针改变对象的值,而没有规定那个对象的值不能通过其他方法改变。
#include <iostream>
using namespace std;
int main()
{

最低0.47元/天 解锁文章
1568

被折叠的 条评论
为什么被折叠?



