Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?

Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D dengan betul daripada Fungsi C?

DDD
Lepaskan: 2024-12-15 10:20:11
asal
675 orang telah melayarinya

How Can I Correctly Return a 2D Array from a C   Function?

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan