c - 二维char数组初始化C

标签 c arrays pointers

根据这个回复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/

相关文章:

c - 检测一组值的变化

c - linux以太网框架套接字说明

c - 将指针元素添加到链表中

php - 使用解码的 json 数组作为 ids 列更新 MySQL

c++ - 迷失在指针世界,通过数组写入变量

objective-c - uint8_t 数组可以包含在另一个 uint8_t 数组中吗?

ios - 如何在 ios 中定义多个 c 标志?

c++ - 使用递归将数组中的元素相乘

javascript - Javascript 中数组索引不会越界

c - 将 “pointer to pointer” 和 “address of pointer” 传递给函数之间的区别