c - 如何在 C 中转换二维数组?

标签 c arrays pointers initialization

最近我的大脑变得很模糊,我这辈子都记不起为什么会出现以下 C 代码:

char a[3][3] = { "123", "456", "789" };
char **b = a;

生成以下警告:

warning: initialization from incompatible pointer type

有人可以为我解释一下吗?

谢谢。

最佳答案

char (*b)[3] = a;

这将 b 声明为指向大小为 3 的 char 数组的指针。请注意,这与声明 char *b[3] 不同b 作为 3 个字符指针的数组。

另请注意,char *b = a 是错误的,并且仍会发出与 char **b = a 相同的警告。

关于c - 如何在 C 中转换二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711122/

相关文章:

python - 使用 Ctypes (SpecialKEval) 将 C++ 代码嵌入到 Python 中

c - 为什么在线判断运行时会出错?

C++删除指针数组中的第一个元素会影响后面的元素

javascript - 对象数组 : accessing an object's value without iterating through the array

arrays - 带有数组指针的结构体在 print_stack() 函数中打印 "random numbers"

c++ - 存储指向对象成员变量的指针

C代码小波变换及解释

c++ - 在 Windows 上使用 C 或 C++ 更改系统时间

java - 类的二维数组为空

pointers - F# - 是否需要明确删除引用单元格?