const修饰指针时应注意的问题

1.指向常量的指针

  顾名思义,一个指针指向const对象,则称它为指向常量的指针。

1 const int a=10;
2 int* ptr=&a;        //错误
3 const int* ptr=&a;    //必须用const来说明ptr是一个指向常量的指针

指向常量的指针也可以指向一个非const对象,所谓指向常量的指针只是要求不能通过它来改变对象的值,而那个对象是可以通过其他途径来改变的:

1 int c = 6;
2 const int* ptr = &c;
3 int const* ptr = &c;     //这样也是可以的,只要*在const右边
4 *p = 4;             //错误
5 c = 4;              //正确

2.常量指针(const pointer)

  指针是一个对象,所以可以把指针本身定位为const常量,这样的指针则称为常量指针

1 int* const ptr;      //错误,常量指针必须初始化
2 int a=10;
3 int* const ptr=&a;    //初始化后,ptr存的只能是a的地址值,不能改变了
4 *ptr=12;          //因为a不是一个常量,所以是可以通过ptr来修改a的值的

3.指向常量的常量指针

1 const int a=6;
2 const int* const ptr=&a;    //ptr自己是常量,它指向的对象也是常量
原文地址:https://www.cnblogs.com/Joezzz/p/9719206.html