天天看点

const指针与指向常量的指针

最近在看的C++代码中,经常出现带const关键字的指针声明,由于const的位置多变,非常容易混淆。在弄清楚后,写下此博客记录一下,也个还没有弄明白的同仁一个参考。

先来看一下下面几种写法:

const int v;
int const v;

const int *p;
int const *p;

int * const p;

const int * const p;
int const * const p;
           

 如孔乙己的茴字的四种写法一样令人讨厌对吧?

其实,区分它们的方法很简单:从右往左看。

const int v;   // v是一个int型的变量,并且是常量 ---> v是一个整型常量
int const v;   // v是一个常量,并且是int型变量 ---> v是一个整型常量

const int *p;   // p是一个指针,它指向const int ---> p是一个指向整型常量的指针
int const *p;   // 同上

int * const p;   // p是一个常量指针,且是指向整型 ---> p是一个指向整型的常量指针

const int * const p;   // p是一个常量指针,且指向整型常量 ---> p是一个指向整型常量的常量指针
int const * const p;   // 同上
           
希望这篇博客解答了你的疑惑,如果有还有疑问,不妨留下评论!

继续阅读