通过指针将数组转换为二维数组

reo*_*eox 5 c arrays pointers

是否可以将单维数组转换为二维数组?

我第一次尝试这将是非常容易的,只需将2D数组的指针设置为1D数组的开头,如下所示:

int foo[] = {1,2,3,4,5,6};
int bla[2][3] = foo;
Run Code Online (Sandbox Code Playgroud)

因为我可以轻松地创建这样的二维数组:

int bla[2][3] = {1,2,3,4,5,6};
Run Code Online (Sandbox Code Playgroud)

所以现在的问题是,有没有办法通过指针转换它?

Dan*_*her 9

你不能初始化一个int bla[2][3]int*(什么foo在这方面变得).

您可以通过声明指向数组的指针来实现该效果int,

int (*bla)[3] = (int (*)[3])&foo[0];
Run Code Online (Sandbox Code Playgroud)

但要确保尺寸实际匹配,否则会造成严重破坏.