Melaksanakan Fungsi untuk Mengembalikan Tatasusunan 2D dalam C
Coretan kod yang disediakan cuba mengembalikan tatasusunan 2D daripada fungsi, tetapi ia mempunyai masalah dengan pengisytiharan tatasusunan. Untuk membetulkannya, kami boleh memperkenalkan penyelesaian yang lebih komprehensif:
#include <iostream> using namespace std; // Returns a pointer to a newly created 2D array with dimensions [height x width] int** MakeGridOfCounts(int height, int width) { int** grid = new int*[height]; // Dynamically allocate an array of pointers to rows for (int i = 0; i < height; i++) { // Allocate each row and set its columns to 0 grid[i] = new int[width]; fill_n(grid[i], width, 0); } return grid; } int main() { int** grid = MakeGridOfCounts(6, 6); // Get a 6x6 grid (initialized with 0s) // Do something with the grid... // Release allocated memory for (int i = 0; i < 6; i++) { delete[] grid[i]; } delete[] grid; return 0; }
Dalam penyelesaian ini, kami menggunakan teknik pengurusan memori untuk memperuntukkan tatasusunan 2D secara dinamik, memastikan pengendalian memori yang betul. Fungsi fill_n digunakan untuk memulakan setiap elemen tatasusunan kepada 0. Ambil perhatian bahawa peruntukan dan deallokasi memori harus dilakukan dalam skop yang sama (dalam kes ini, dalam fungsi utama).
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!