如何在C中声明一个常量2d字符串数组

我有以下数组结构:

left , right , top top , left , right top , top , left 

我想在C中声明它,我这样做了:

 char *movements[][] = {{"left","right","top"}, {"top","left","right"}, {"top","top","top"} } 

但我收到此error : array has incomplete element type. 实现这一目标的正确方法是什么(声明和访问(打印))。我是否需要采用三维数组?

在C中,您必须在定义二维数组时指定列大小。 看看这个问题: 为什么我们需要在传递2D数组作为参数时指定列大小?

 char *movements[][3] = { {"left","right","top"}, {"top","left","right"}, {"top","top","top"} }; 

有多种方法可以在C中声​​明结构。在您的特定情况下,我会声明表单的3乘3矩阵

 char *movements[3][3] = { {"left","right","top" }, {"top" ,"left" ,"right"}, {"top" ,"top" ,"top" } }; 

但是,如果您不知道数组的初始大小并且希望在函数内填充数组,则可以声明它

更新:

 char ***movements; 

并将其作为参数传递给您的函数,然后您可以为其分配内存并填充它(请参阅下面的示例)。 你只需记得事后解除分配:-)

这是一个矢量的例子;

 void SomeFunction(char ***ptr_movements){ int dim = 3; **ptr_movements = (char*) malloc(dim*sizeof(char*)); (*ptr_movements)[0] = "left"; (*ptr_movements)[1] = "right"; (*ptr_movements)[2] = "top"; } void main(){ char **movements; SomeFunction(&movements); // Do something with resulting array }