首頁 > 後端開發 > C++ > 如何在 C 中正確傳遞對二維數組的參考?

如何在 C 中正確傳遞對二維數組的參考?

Mary-Kate Olsen
發布: 2024-11-07 04:59:02
原創
399 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板