1、常量指针(constant pointers):指针自身是常量,const关键字出如今星号右边。如:spa
1 char greeting[] = "Hello";
2 char* const p = greeting; // const pointer, non-const data
2、指针常量(pointers to constants):指针所指物是常量,const关键字出如今星号左边。如: 指针
1 char greeting[] = "Hello"; 2 const char* p = greeting; // non-const pointer, const data
我对这两个概念的理解来自于《Effective C++》(第三版,侯捷译)。code
在该书的第一章-条款02中有这样一段话:”当咱们以常量替换#defines, 有两种特殊状况值得说说。第一是定义常量指针(constant pointers)。因为常量定义式一般被放在头文件内......所以有必要将指针(而不仅是指针所指之物)声明为const。“。由此获得常量指针的定义。blog
结合第二章-条款03中的这段话:“若是关键字const出如今星号左边,表示被指物是常量;若是出如今星号右边,表示指针自身是常量;......”,就获得了C++中常量指针与指针常量的定义与区别。class