如何在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 }