c++ 中的 int (*) [ someValue] 是什么?

What is int (*) [ someValue] in c++?

我大学刚学c++。 我试图编译来自 GitHub 的代码来解决 Rubiks 魔方。我在以下代码行中遇到错误:

  Table = int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves] // the cast

错误信息是:

MoveTable.cpp   [Error] expected primary-expression before 'int'

我是用dev-c++IDE编译的,不熟悉int(*)[]。 请有人告诉我这是什么,我该如何纠正?

我做了一些研究,发现 this. Is it same as my question? It seems a bit different. And I am not asking for int *(int*)=constant like asked

编辑:我忘记在

之前包含完整的声明
Table = (int (*)[Cube::NumberOfClockwiseQuarterTurnMoves] )// the cast
    (new int[TableSize*Cube::NumberOfClockwiseQuarterTurnMoves]);

我遇到了这些错误。

    [Error] expected primary-expression before 'int'
    [Error] expected ')' before 'int'

简而言之

您的问题标题的答案是:int(*)[someConstant] 对应的类型是 指向 table 的 someConstant 项的指针,每个项的类型为 int.

全部详情

在 C++ 中,有效语句以 semi-column 结尾,因此语句中缺少一部分。此外,评论显示这只是演员阵容。

在 GitHub 上的原始 project file 中,完整的语句是:

Table = (int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves]) // the cast
        (new int[TableSize*Cube::Move::NumberOfClockwiseQuarterTurnMoves]); // the allocation

此转换意味着表达式将返回的指针将作为指向 NumberOfClockwiseQuarterTurnMoves 个整数的 table 的指针处理,即使实际上指向更大的 table 由 new 表达式返回。

像您所做的那样删除 int 之前的括号会使该语句无效,因为 int (*)[Cube::Move::NumberOfClockwiseQuarterTurnMoves] 是一种类型,并且不允许在表达式中使用这样的类型没有正确的铸造操作员。因此,编译器告诉您它需要一个真实的表达式(它将提供一个真实的值)。

P.S.:这确实与 int (*)() 相关的问题无关,后者指的是指向函数的函数指针返回一个 int