C++ 常量指针与指针常量

Posted r0xfed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 常量指针与指针常量相关的知识,希望对你有一定的参考价值。

        一、常量指针(constant pointers):指针自身是常量,const关键字出现在星号右边。如:

1 char greeting[] = "Hello";2 char* const p = greeting;    // const pointer, non-const data

        二、指针常量(pointers to constants):指针所指物是常量,const关键字出现在星号左边。如: 

1 char greeting[] = "Hello";
2 const char* p = greeting;      // non-const pointer, const data


        我对这两个概念的理解来自于《Effective C++》(第三版,侯捷译)。

        在该书的第一章-条款02中有这样一段话:”当我们以常量替换#defines, 有两种特殊情况值得说说。第一是定义常量指针(constant pointers)。由于常量定义式通常被放在头文件内......因此有必要将指针(而不只是指针所指之物)声明为const。“。由此得到常量指针的定义。

        结合第二章-条款03中的这段话:“如果关键字const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;......”,就得到了C++中常量指针与指针常量的定义与区别。

以上是关于C++ 常量指针与指针常量的主要内容,如果未能解决你的问题,请参考以下文章

C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量

C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量

指针与 const --- 指针常量与常量指针

C++指针常量和常量指针,const修饰函数。

C++指针常量和常量指针,const修饰函数。

C++指针常量和常量指针,const修饰函数。