【发布时间】:2020-07-12 07:51:18
【问题描述】:
在 C++ Primer(第 5 版)中,我发现了一个对我来说没有多大意义的示例:
const int i = /*some integer literal*/;
auto e = &i;
对我来说,&i 代表const int i 的地址——所以地址本身不是(低/高级)常量,e 应该被解释为int *。
但这本书将e解释为const int*说明原因(const对象的&是低级const) - 有人可以澄清什么是错的以我的理解。
【问题讨论】:
-
const int*表示整数是 const (这是正确的)。int* const表示指针是 const (如您所说,这不是真的)。所以我认为你只是误解了const int*的含义。 -
e不是常量。你可以修改它。要 const 限定它,类型需要是int * const -
这里一切都清楚了:
const int*是指向 const 整数的非 const 指针,int* const是指向非 const 整数的 const 指针,const int* const是指向 const 整数的 const 指针 -
@john 是的,这是一个错字 - 已修复 :)
-
@AgrudgeAmicus 是的,没错。如果
e是int*,那么你可以使用e来修改i,这是不允许的,因为i是const。