最近在看的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; // 同上
希望这篇博客解答了你的疑惑,如果有还有疑问,不妨留下评论!