声明一个函数在c 中返回一个2 d数组

这个问题在某些方面有问题,但我觉得很难理解。

int (*q)[3][4] – > q是指向3行和4列的2-D数组的指针。

现在假设我想从函数返回一个二维数组。

 pointer-to-2d-array func() { static 2 day array; return ; } 

基本上应该是我的function的签名。 我见过很多像下面这样我不喜欢的地方

 int (*fun2())[column]; 

我发现难以解释/理解签名。 有人可以帮我吗?

一种简单的方法是使用typedef

 typedef int (*ThreeByFourPtr)[3][4]; ThreeByFourPtr fun() { static int res[3][4]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; return &res; } 

优点是语法镜像了类型指针声明的类型,类型名称替换了变量的名称。