【问题标题】:Pointer-to-Pointer-to-Const Conversion指针到指针到常量的转换
【发布时间】:2011-12-21 05:22:19
【问题描述】:
我正在阅读一本名为 C++ Gotchas 的书,它解释了 const 指针之间的转换,但我在理解以下规则时遇到了一些麻烦:
两个指针类型 T1 和 T2 相似,如果存在类型 T 和
整数 n > 0 使得:
T1 是 cv 1 , 0 指向 cv 的指针, 1,1 指向 . . . cv 1,n−1
指向 cv 1,n T
的指针
和,
T2 是 cv 2,0 指向 cv 2,1 的指针。 . . cv 2,n−1
指向 cv 2,n T
的指针
其中每个 cvi,j 为 const、volatile、const volatile 或无。
有人能指出我可以得到解释的正确方向吗,或者有谁熟悉 cv 1,0 和 cv em> 1,1 表示在上述每个序列中?这本书没有帮助我足够理解它。但我确信这与 C++ 语言有关。
【问题讨论】:
标签:
c++
constants
pointer-conversion
【解决方案1】:
cv i,j 表示 2*(n+1) 个占位符的集合:
对于i 与1 <= i <= 2 和j 与0 <= j <= n 的每种组合,占位符cv i,j 代表三个说明符之一const,volatile, const volatlie 或什么都没有。
本书摘录换句话说,如果可以找到这些占位符和类型T,从而满足两个语句(“T1 is ..”),则调用T1和T2 “类似”。
例如T1 = const int* 和T2 = int* 是相似的,因为如果选择的话,它们会填充摘录中的两个语句:
-
T = int,n = 1
-
cv1,0= {nothing} 和 cv1,1 = const
-
cv2,0={nothing} 和 cv2,1 = {nothing}
要看到这个,只需插入占位符:
const int* 是指向const int 的指针
int* 是指向int 的指针