如何在C中投射二维数组?

str*_*iwi 8 c arrays pointers initialization

最近我的大脑变得很模糊,我不能为我的生活记住为什么以下的C代码:

char a[3][3] = { "123", "456", "789" };
char **b = a;
Run Code Online (Sandbox Code Playgroud)

生成以下警告:

warning: initialization from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解释一下.

谢谢.

sep*_*p2k 10

char (*b)[3] = a;
Run Code Online (Sandbox Code Playgroud)

这声明b为指向大小为3的char数组的指针.注意,这与3个char指针数组char *b[3]声明的不一样b.

另请注意,这char *b = a是错误的,仍会发出相同的警告char **b = a.