作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!