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

标签 c

<分区>

这个问题是以某些方式提出的,但我发现它很难理解。

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;
}

优点是语法类似于类型指针声明,用类型名代替变量名。

关于c - 在c中声明一个返回二维数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38424801/

相关文章:

c - 我如何使用c解析字符串

c - 连续监听端口并将数据转储到文本文件

mysql - 将自定义字符串传递到 MariaDB/MySQL C 连接器 API 函数时出现 "unknown column in field list"错误

c - 用 C 打乱文本

c - MAKE如何记住文件时间戳

c - 什么是 "DNS_BLOCK_ASSERTIONS"(C 编译器标志)?

c - c 中的 fread 读取的内容超出了指示的内容

c - 在下面的程序中,为什么 sizeof 返回的是初始化数组大小的两倍而不是多一个字节?

c - 如何为内核和设备驱动程序开发设置 YouCompleteMe?

c - 是否可以使用相同的静态void函数在c中使用多个线程?