|
|
1
9
简短回答:
const(和volatile)应该自然出现在它们符合条件的类型之后。 当您以前编写它时,编译器会自动在内部重写它:
变成
它是指向常量int的指针。由于指针本身仍然是可分配的,因此这些常量int的列表将编译得很好。 |
|
|
2
8
从右向左读取C样式类型声明。所以“const int*”是指向常量int的指针(“const int”和“int const”的意思相同)。这些是完全可以分配的。但是(2)和(3)是指向int的常量指针,因此不可赋值。 |
|
|
3
6
您在问“为什么编译器解释(2)与(3)相同?”因为,在C++语言中(以及在C语言中) 是 语义相同。当您将一个类型名定义为
后来的类型
C++中的TyPulf名称不是宏。虽然它们不定义新类型(只是现有类型的别名),但结果别名仍然是“原子的”、“整体的”,从某种意义上说,应用于别名的任何限定符都将应用为
顶层
限定词。当使用typedef名称时,无法“潜入”const限定符,以便它以某种方式“下降”到类型的较低级别部分。(
如果您坚持使用typedef名称,那么除了提供两个不同的typedef名称外,您没有其他直接选择,例如
使用
|
|
4
5
1)
2)
简而言之,
|
|
|
5
3
对于typedef,您将指针本身定义为常量,就像在第3条语句中那样。 |
|
|
6
0
我相信你知道
|
|
|
Jersey · 如何在自己的定义中缩写类名? 8 年前 |
|
|
Felix · 为什么我用typedef定义自然类型的尝试不起作用? 8 年前 |
|
|
cppBeginner · 将“typedef”设为最终(或模拟) 8 年前 |
|
|
coJetty · 使用或typedef减少模板参数 8 年前 |
|
|
VannTen · 使用指向非结构类型的不透明指针 8 年前 |
|
|
John Smith · C中带有数组的Typedef 9 年前 |
|
|
thndrwrks · 带有typedef ed函数指针的常量限定符 9 年前 |