指针指向转换的指针

时间:2011-12-21 05:22:19

标签: c++ const pointer-conversion

我正在读一本名为C++ Gotchas的书,它解释了const指针之间的转换,我在理解以下规则时遇到了一些麻烦:

  

如果存在类型T和,则两个指针类型T1和T2相似   整数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 1,1 表示上述每个序列?这本书对我的帮助不足以理解它。但我确信这与C ++语言有关。

1 个答案:

答案 0 :(得分:4)

cv i,j表示2 *(n + 1)个占位符的集合:

对于i1 <= i <= 2j0 <= j <= n的每个组合,占位符cv i,j代表三个说明符之一const,volatile, const volatlie或什么都没有。

本书摘录换句话说,如果可以找到这些占位符和类型T,使得两个语句(“T1 is ..”)得到满足,那么T1和{ {1}}被称为“相似”。

例如T2T1 = const int*是相似的,因为如果选择的话,它们会从摘录中填写两个语句:

  • T2 = int*T = int
  • n = 1cv1,0= {nothing}
  • cv1,1 = constcv2,0={nothing}

要看到这一点,只需插入占位符:

cv2,1 = {nothing}是指向const int*

的指针

const int是指向int*

的指针