Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?

Bagaimana untuk Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 06:47:10945semak imbas

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

Mengembalikan tatasusunan 2D dalam C

Mengembalikan tatasusunan 2D daripada fungsi dalam C boleh menjadi tugas yang sukar. Satu pendekatan, seperti yang ditunjukkan oleh kod yang disediakan, cuba mengembalikan tatasusunan 2D menggunakan kod yang ditunjukkan di bawah tetapi pendekatan ini tidak sesuai.

int **MakeGridOfCounts()
{
    int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};
    return cGrid;
}

Sebaliknya, pendekatan yang berdaya maju melibatkan mencipta dan mengembalikan penunjuk ke Tatasusunan 2D menggunakan peruntukan memori dinamik. Mari kita terokai cara ini dilakukan dengan contoh kod yang dipertingkatkan:

#include <cstdio>

int** create2DArray(unsigned height, unsigned width) { .... } 
  1. Buat Tatasusunan 2D ( create2DArray() ):

    • Pertama, kami mencipta penunjuk kepada tatasusunan 2D dan penunjuk kepada setiap individu baris.
    • Kami memperuntukkan memori untuk baris dan kemudian untuk setiap baris, kami memperuntukkan memori untuk lajur.
int** array2D = new int*[height];
for (int h = 0; h < height; h++) {
   array2D[h] = new int[width];
   .
   .
   .
}
  1. Kembalikan Array (create2DArray() ):

    • Setelah tatasusunan dibuat, penuding ke baris pertama (array2D) dikembalikan. Penunjuk ini mewakili keseluruhan tatasusunan.
  2. Bersihkan Memori (utama() ):

    • Adalah penting untuk melepaskan memori yang diperuntukkan untuk tatasusunan 2D apabila ia tidak lagi diperlukan. Ini melibatkan pemadaman memori setiap baris dan kemudian penuding ke baris pertama untuk mengelakkan kebocoran memori.
for (int h = 0; h < height; h++) {
  delete [] array2D[h]; 
}
delete [] array2D;

Pendekatan ini memastikan pengurusan memori yang betul dan menyediakan cara untuk mengembalikan a Tatasusunan 2D daripada fungsi dalam C .

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn