C++ 书籍的翻译中有两个特别混淆的概念:常量指针和指针常量。乍一看这两个意思十分相近,通过中文翻译很难看出这两者之间的区别。它们的英文翻译如下:
这也是为什么新手学习 C++ 十分困难的一个原因,所以这里建议大家学习 C++ 时,尽量阅读英文书籍。即使大名鼎鼎的 《C++ primer》 也没有将这两个概念翻译好。
关于指针和常量的组合写法有很多种,下面列举出 6 种:
你能说出它们表达的意思吗?
如果你是新手,准确快速说出它们的意思,这应该是一个比较难的任务。
有一种简单的记法:从右往左读,遇到 p
就替换成 “p is a ”,遇到 *
就替换成 “pointer to”。
const int p
就是常量整数。我们对后面 5 种写法,套用上面的简单记法:
const int* p
: p is a pointer to int constint const* p
: p is a pointer to const intint * const p
: p is a const pointer to intconst int * const p
: p is a const pointer to int constint const * const p
: p is a const pointer to const int总结:
*
前面的是被指向对象的修饰,*
后面的是对指针本身的修饰。
(完)