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
我大学刚学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