二维char数组初始化C

rvi*_*nca 1 c arrays pointers

根据这个指针的响应指针

char[] = char *p
char[][] = char **p
Run Code Online (Sandbox Code Playgroud)

但是,当我使用接下来的两个表单初始化一个字符串数组时

char **p = {"Hello", "World"};
char p[][] = {"Hello", "World"};
Run Code Online (Sandbox Code Playgroud)

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

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

但随着

char *matriz[] = {"Hello", "World"};
Run Code Online (Sandbox Code Playgroud)

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

Jen*_*edt 6

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

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

char p[][7] = {"Hello", "World"};
Run Code Online (Sandbox Code Playgroud)

应该管用.为您的第一个表格

char **p
Run Code Online (Sandbox Code Playgroud)

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