gpt4 book ai didi

c - 如何解释以下代码中的 "int (*get_2d_array(void))[3] "函数声明?

转载 作者:行者123 更新时间:2023-11-30 20:10:18 25 4
gpt4 key购买 nike

int (*get_2d_array(void))[3]    //This Function
{
static int arr[2][3] = { 10, 20, 30, 40, 50, 60 };
return arr;
}


int main()
{

int i, j, row = 2, col = 3;
int (*ptr)[col];

ptr = get_2d_array();

for( i = 0; i < row; i++ )
{
for( j = 0; j < col; j++ )
{
printf("%d ",ptr[i][j]);
}
printf("\n");
}
return 0;
}

这个函数被声明为一个数组,有人可以帮助我解释这个函数声明吗?

函数输出是打印被调用函数返回的数组。

最佳答案

函数返回一个指向大小为 3 的 int 数组的指针。

您可以使用诸如https://cdecl.org之类的解决方案将来翻译。

但是,我在某处找到了一种无需使用外部工具即可“翻译”的方法。您开始阅读标识符,然后向右移动,当您遇到右大括号时,您会“反弹”。

使用您的函数,其工作原理如下:

  • 您以标识符开始:get_2d_array,因此我们有“get_2d_array is a...”

  • 当我们有 (void) 时,我们向右移动,因此它看起来像一个函数声明:“get_2d_array 是一个不带参数并返回的函数...”

  • 我们进一步向右移动,遇到不平衡的右大括号,所以我们反弹并发现一个星号,它表示一个指针;因此,我们有“get_2d_array是一个不带参数并返回指向...的指针的函数”

  • 好的,再向右走,我们会遇到 [3],因此我们将其插入句子中:“get_2d_array 是一个不带参数并返回的函数指向大小为 3 的数组的指针..."

  • 我们最后没有解释的是开头的“int”,所以我们最终得到:“get_2d_array 是一个不带参数并返回指向int"大小为 3 的数组"

关于c - 如何解释以下代码中的 "int (*get_2d_array(void))[3] "函数声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46515468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com