Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D daripada Fungsi C?
Dalam C , apabila bekerja dengan tatasusunan dan fungsi, selalunya perlu mengembalikan tatasusunan berbilang dimensi. Artikel ini menangani persoalan khusus tentang cara mengembalikan tatasusunan 2D daripada fungsi dalam C .
Percubaan kod yang disediakan, MakeGridOfCounts(), bertujuan untuk mengembalikan tatasusunan 2D tetapi gagal disebabkan oleh pereputan tatasusunan. Sebaliknya, untuk mengembalikan tatasusunan 2D dengan betul, penuding kepada tatasusunan mesti dikembalikan.
Untuk mengatasi had tatasusunan statik, C menawarkan cara untuk mencipta tatasusunan berbilang dimensi secara dinamik. Kod berikut menunjukkan cara mencipta tatasusunan 2D baharu pada timbunan:
int** create2DArray(unsigned height, unsigned width) { int** array2D = 0; array2D = new int*[height]; for (int h = 0; h < height; h++) { array2D[h] = new int[width]; for (int w = 0; w < width; w++) { // fill in some initial values array2D[h][w] = w + width * h; } } return array2D; }
Fungsi ini mengambil dua parameter, ketinggian dan lebar serta mengembalikan penuding kepada tatasusunan 2D yang baru dibuat saiz [tinggi x lebar ].
Untuk mengembalikan tatasusunan 2D yang dicipta secara dinamik daripada fungsi, a penunjuk kepada tatasusunan dikembalikan. Penunjuk ini menunjuk kepada elemen pertama tatasusunan dan menyediakan akses kepada keseluruhan tatasusunan:
int** MakeGridOfCounts() { int** cGrid = create2DArray(6, 6); return cGrid; }
Apabila bekerja dengan tatasusunan yang diperuntukkan secara dinamik, adalah penting untuk diingat untuk membersihkan ingatan selepas digunakan. Jika tidak, kebocoran memori boleh berlaku:
for (int h = 0; h < height; h++) { delete[] my2DArray[h]; } delete[] my2DArray; my2DArray = 0;
Dengan mengikut teknik yang digariskan di atas, anda boleh mengembalikan tatasusunan 2D daripada fungsi dalam C . Ingat untuk mencipta tatasusunan secara dinamik untuk mengelakkan pengehadan dengan tatasusunan statik dan membersihkan memori yang diperuntukkan selepas digunakan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D daripada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!