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
Lepaskan: 2024-12-08 06:47:10
asal
948 orang telah melayarinya

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;
}
Salin selepas log masuk

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) { .... } 
Salin selepas log masuk
  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];
   .
   .
   .
}
Salin selepas log masuk
  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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan