【问题标题】:Declare pointer to 2D enum array声明指向二维枚举数组的指针
【发布时间】:2014-06-06 21:19:51
【问题描述】:

考虑 MNWE:

enum T {VALUE};

int main() {
    T T_arr[8][8];
    T** T_arr_ptr = T_arr;
}

现在这不能编译,说

错误:无法在初始化中将T(*)[8] 转换为T**

不使用auto,这个指针的正确类型是什么?

【问题讨论】:

  • 数组不是指针。 T(*T_arr_ptr)[8] 即便如此,那是指向一维数组的指针,而不是指向二维数组的指针。我很确定你不想要其中之一。

标签: c++ arrays pointers enums multidimensional-array


【解决方案1】:

二维数组名称衰减为指向数组第一行的指针,因此它的类型为指向数组的指针。这里T_arr 在衰减后是T(*)[8] 类型。
改变

T** T_arr_ptr = T_arr;  

T (*T_arr_ptr)[8] = T_arr;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多