根据此回复pointers to pointers
char[] = char *p
char[][] = char **p
但是,当我使用接下来的两个表单
初始化一个字符串数组时char **p = {"Hello", "World"};
char p[][] = {"Hello", "World"};
编译器向我显示了一些错误。
[错误]数组类型具有不完整的元素类型
但是
char *matriz[] = {"Hello", "World"};
没有警告。我是C语言的新手,我很困惑。
答案 0 :(得分:6)
没有数组数组与双指针不同。你真的应该读一下,有很多FAQ和答案。
然后您收到的错误是双空[][]
。在C中,当您使用[]
声明数组时,编译器会尝试从初始化程序计算数组的大小。这仅适用于一个[]
。对于第二个,你必须给出一个长度。像
char p[][7] = {"Hello", "World"};
应该有效。为您的第一个表格
char **p
这声明了一个指向指针的指针,所以特别是一个指针。指针不能用两个项初始化,它们只需要一个,并且它本身应该是正确的指针类型或转换为它。