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自己是常量,它指向的对象也是常量