根据这个回复pointers to pointers
char[] = char *p
char[][] = char **p
但是,当我用接下来的两种形式初始化一个字符串数组时
char **p = {"Hello", "World"};
char p[][] = {"Hello", "World"};
编译器向我显示了一些错误。
[Error] array type has incomplete element type
但是用
char *matriz[] = {"Hello", "World"};
没有警告。我是C语言的新手,我很困惑。
最佳答案
数组的数组不等于双指针。你真的应该读一读,那里有很多常见问题解答和答案。
然后您收到的错误是双重空的 [][]
。在 C 语言中,当您使用 []
声明数组时,编译器会尝试从初始化程序计算数组的大小。这仅适用于一个 []
。其次,您必须给出一个长度。有点像
char p[][7] = {"Hello", "World"};
应该可以。对于您的第一个表单
char **p
这声明了一个指向指针的指针,所以特别是一个指针。指针不能用两个项目初始化,它们只需要一个,并且它本身应该是正确的指针类型或转换为它。
关于c - 二维char数组初始化C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32287256/