详细分析c++ const 指针与指向const的指针
C++ const 指针与指向const的指针详细分析 C++ 编程语言中,const 指针和指向const的指针是两个容易混淆的概念,但它们有着不同的定义和使用场景。在本文中,我们将详细分析 C++ const 指针和指向const的指针,帮助读者更好地理解和学习这两个概念。 const 指针 const 指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下: ```c type *const 指针名称; ``` 例如: ```c const int *pOne; // 指向整形常量的指针,它指向的值不能修改 int * const pTwo; // 指向整形的常量指针,它不能在指向别的变量,但指向(变量)的值可以修改。 const int *const pThree; // 指向整形常量的常量指针,它既不能再指向别的常量,指向的值也不能修改。 ``` 指向const的指针 指向const的指针是指针指向的内容是不能被修改的。它有两种写法: ```c const int* p; // 推荐 int const* p; // 第二种写法,但容易引起混淆 ``` 这两种写法都是指向const的指针,表示指针指向的内容是不能被修改的。 const 指针和指向const的指针的区别 const 指针和指向const的指针是两个不同的概念: * const 指针表示指针本身的值是不能被修改的。 * 指向const的指针表示指针指向的内容是不能被修改的。 例如: ```c int* const p = &x; // p 是一个指向int 的const 指针,它指向的值可以修改 const int* p = &x; // p 是一个指向const int 的指针,它指向的值不能修改 ``` 成员函数中的const 在成员函数中,const 关键字可以用于成员函数,以表示该函数不会修改对象的状态。 ```c class Rectangle{ public: void SetLength(int length){itslength = length;} int GetLength() const {return itslength;} // 成员函数声明为常量 private: int itslength; int itswidth; }; ``` 小结 通过对 const 指针和指向const的指针的分析,我们可以总结出以下规律: * const 关键字总是出现在*的左边表示指针指向的内容是不能被修改的。 * const 关键字总是出现在*的右边表示指针本身的值是不能被修改的。 通过这个规律,我们可以更好地理解和使用 const 指针和指向const的指针。