首页 >后端开发 >C++ >如何在 C 中正确传递对二维数组的引用?

如何在 C 中正确传递对二维数组的引用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-07 04:59:02381浏览

How to Correctly Pass References to Two-Dimensional Arrays in C  ?

在 C 中传递对二维数组的引用

在 C 中,将对二维数组的引用传递给函数可能很棘手。考虑以下代码:

<code class="cpp">const int board_width = 80;
const int board_height = 80;
void do_something(int[board_width][board_height]& array);  //function prototype</code>

此原型从 g 生成错误:

error: expected ‘,’ or ‘...’ before ‘*’ token

错误解释和解决方案

此错误表示星号 (*) 所在的位置缺少某些内容。引用的声明应使用以下语法:

<code class="cpp">void do_something(int (&array)[board_width][board_height]);</code>

通过在数组周围添加括号,我们创建对整个二维数组的引用。这允许函数 do_something 直接修改数组。

与指针声明的区别

请注意,这与使用指针类型声明参数不同:

<code class="cpp">void do_something(int array[board_width][board_height]);</code>

这种情况下,只传递指向二维数组第一个子数组的指针,忽略 board_width。这是因为 C 中的数组在传递给函数时会退化为指针。由于原型中明确要求引用,因此此声明不正确。

大小计算

使用引用时,函数内的 sizeof(array) 将产生 sizeof (int[板宽度][板高度])。相反,使用基于指针的声明将导致 sizeof(int(*)[board_height]),它对应于指针的大小。

以上是如何在 C 中正确传递对二维数组的引用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn