二维char数组初始化C

时间:2015-08-29 14:42:06

标签: c arrays pointers

根据此回复pointers to pointers

char[] = char *p
char[][] = char **p

但是,当我使用接下来的两个表单

初始化一个字符串数组时
char **p = {"Hello", "World"};
char p[][] = {"Hello", "World"};

编译器向我显示了一些错误。

  

[错误]数组类型具有不完整的元素类型

但是

char *matriz[] = {"Hello", "World"};

没有警告。我是C语言的新手,我很困惑。

1 个答案:

答案 0 :(得分:6)

没有数组数组与双指针不同。你真的应该读一下,有很多FAQ和答案。

然后您收到的错误是双空[][]。在C中,当您使用[]声明数组时,编译器会尝试从初始化程序计算数组的大小。这仅适用于一个[]。对于第二个,你必须给出一个长度。像

这样的东西
char p[][7] = {"Hello", "World"};

应该有效。为您的第一个表格

char **p

这声明了一个指向指针的指针,所以特别是一个指针。指针不能用两个项初始化,它们只需要一个,并且它本身应该是正确的指针类型或转换为它。