在c中声明返回二维数组的函数

在c中声明返回二维数组的函数,c,C,这个问题在某些方面被问到,但我发现很难理解 int(*q)[3][4]->q是指向3行4列的二维数组的指针 现在假设我想从一个函数返回一个二维数组 pointer-to-2d-array func() { static 2 day array; return ; } 基本上我的函数的签名应该是什么。我见过很多像下面这样的地方,我不明白 int (*fun2())[column]; 我发现很难解释/理解签名。 有人能帮我吗?一个简单的方法是使用typedef: typ

这个问题在某些方面被问到,但我发现很难理解

int(*q)[3][4]
->
q
是指向3行4列的二维数组的指针

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

pointer-to-2d-array  func() {

     static 2 day array;

     return ;
}
基本上我的函数的签名应该是什么。我见过很多像下面这样的地方,我不明白

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;
}
优点是语法反映了类型指针声明的语法,类型名称替换了变量的名称。

请在提问之前使用。
void func(int(*p)[[COL_SIZE])
应该这样做。请注意,行大小是可选的,可以自动计算。数组作为指针传递给函数,被调用方中的更改也将反映在调用方中。因此,
void
作为返回类型是有意义的。