理清C++常量指针和指针常量这团乱麻
写在前面: 与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头。其实本来没什么,这无非是 const int *p与 int* const p 的区别, 但一涉及到起名字,特别是给他们戴上“常量指针”和“指针常量”的中文帽子,由于作者和译者(针对外文书)的不同,就出现了“张冠李戴”和“李冠张戴”的乱像,不知道谁是谁了,弄得人一头雾水,尤其是对于初学者。 本文的目的就是针对这一细节,为大家将两者理清楚,同时说明在使用上的区别。 注意: 1.const int *p也可写成int const *p,即 C++中const int和int const无区别,这使得本来就很乱的局面更加麻烦,本文中我只使用const int,以后不再说明。 2. 如果您讨厌啰嗦,只想学“干货”,您可以直接跳到“ 安能辨我是雄雌——判断方法”一节(在下技术有限,就不设置页面内跳转了)。 在理清楚之前,让 我们先简单看看当前“乱象丛生”的现状吧。 一、const遇上指针——一团乱麻 同样的问题,相反的解释 1.标新立异的少数派 C++ Primer第五版的提法可谓与其它C++书籍背道而驰,它的提 常量指针——int* const p 指向常量的指针——const int *p 在英文版中,int* const p被称为const pointer,于是中文版将其译为常量指针