首頁 > 後端開發 > C++ > 如何從 C 函數正確返回二維數組?

如何從 C 函數正確返回二維數組?

Mary-Kate Olsen
發布: 2024-12-08 06:47:10
原創
948 人瀏覽過

How to Properly Return a 2D Array from a C   Function?

傳回 C 中的二維陣列

從 C 的函數傳回 2D 陣列可能是一項棘手的任務。如所提供的程式碼所示,一種方法嘗試使用下面所示的程式碼傳回二維數組,但這種方法不合適。

int **MakeGridOfCounts()
{
    int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};
    return cGrid;
}
登入後複製

相反,一種可行的方法是建立並傳回指向使用動態記憶體分配的二維數組。讓我們透過改進的程式碼範例來探索如何完成此操作:

#include <cstdio>

int** create2DArray(unsigned height, unsigned width) { .... } 
登入後複製
  1. 建立二維陣列( create2DArray() ):

    • 首先,我們建立一個指向二維數組的指標和一個指向每個個體的指標行。
    • 我們為行分配內存,然後為每行分配列內存。
int** array2D = new int*[height];
for (int h = 0; h < height; h++) {
   array2D[h] = new int[width];
   .
   .
   .
}
登入後複製
  1. 傳回陣列(create2DArray() ):

      ,將傳回指向第一行(array2D) 的指標。這個指標代表整個陣列。
  2. 清理記憶體(main()):

      釋放至關重要當不再需要二維數組時為其分配的記憶體。這涉及到刪除每一行的內存,然後刪除指向第一行的指標以防止內存洩漏。
for (int h = 0; h < height; h++) {
  delete [] array2D[h]; 
}
delete [] array2D;
登入後複製
此方法可確保正確的記憶體管理並提供一個傳回來自 C 函數的二維數組。

以上是如何從 C 函數正確返回二維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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