我想创建一个存储二维chars数组的队列,我认为以下列方式声明它会起作用:
queue<char*[7]> states;
但事实证明,正确的方法是:
queue<char(*)[7]> states;
我无法真正理解圆括号的变化是什么?我想它与优先级有关,但没有更具体的。
答案 0 :(得分:3)
char*[7]
是一个包含指向char
的七个指针的数组,char(*)[7]
是指向七个char
的数组的指针。通常它用于分配动态连续的多维数组(参见here)。
C++ FAQ about arrays可能会让您对这些微妙之处有所了解。
答案 1 :(得分:3)
记住char*[7]
含义的一种简单方法是,这是main
的第二个参数的形式。
即。它意味着一个指针数组。
然后char(*)[7]
最容易通过引入名称进行分析,例如char(*p)[7]
。由于C声明旨在模仿已声明事物的使用,这意味着您可以取消引用p
,并对结果编制索引,然后生成char
。即p
是指向char
数组的指针。
答案 2 :(得分:2)
char*[7]
是指向char
的指针数组。
char(*)[7]
是一个引用char
数组的指针。