【问题标题】: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,0cv em> 1,1 表示在上述每个序列中?这本书没有帮助我足够理解它。但我确信这与 C++ 语言有关。

【问题讨论】:

    标签: c++ constants pointer-conversion


    【解决方案1】:

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

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

    本书摘录换句话说,如果可以找到这些占位符和类型T,从而满足两个语句(“T1 is ..”),则调用T1T2 “类似”。

    例如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 的指针

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2022-01-18
      • 2020-06-15
      • 1970-01-01
      • 2013-04-14
      • 2023-03-02
      • 2020-10-23
      相关资源
      最近更新 更多