Maison >développement back-end >C++ >Comment puis-je renvoyer correctement un tableau 2D à partir d'une fonction C ?

Comment puis-je renvoyer correctement un tableau 2D à partir d'une fonction C ?

DDD
DDDoriginal
2024-12-15 10:20:11676parcourir

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

Implémentation d'une fonction pour renvoyer un tableau 2D en C

L'extrait de code fourni tente de renvoyer un tableau 2D à partir d'une fonction, mais il a un problème avec la déclaration du tableau. Pour remédier à cela, nous pouvons introduire une solution plus complète :

#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;
}

Dans cette solution, nous utilisons des techniques de gestion de la mémoire pour allouer dynamiquement le tableau 2D, garantissant ainsi une bonne gestion de la mémoire. La fonction fill_n est utilisée pour initialiser chaque élément du tableau à 0. Notez que l'allocation et la désallocation de mémoire doivent être effectuées dans le même périmètre (dans ce cas, au sein de la fonction principale).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn