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

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

Mary-Kate Olsen
Libérer: 2024-12-08 06:47:10
original
953 Les gens l'ont consulté

How to Properly Return a 2D Array from a C   Function?

Renvoie des tableaux 2D en C

Renvoyer un tableau 2D à partir d'une fonction en C peut être une tâche délicate. Une approche, comme le démontre le code fourni, tente de renvoyer un tableau 2D à l'aide du code ci-dessous, mais cette approche ne convient pas.

int **MakeGridOfCounts()
{
    int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};
    return cGrid;
}
Copier après la connexion

Au lieu de cela, une approche viable consiste à créer et à renvoyer un pointeur vers le Tableau 2D utilisant l'allocation dynamique de mémoire. Explorons comment cela est réalisé avec un exemple de code amélioré :

#include <cstdio>

int** create2DArray(unsigned height, unsigned width) { .... } 
Copier après la connexion
  1. Créer le tableau 2D ( create2DArray() ):

    • Tout d'abord, nous créons un pointeur vers le tableau 2D et un pointeur vers chaque individu rangée.
    • Nous allouons de la mémoire pour les lignes puis pour chaque ligne, nous allouons de la mémoire pour les colonnes.
int** array2D = new int*[height];
for (int h = 0; h < height; h++) {
   array2D[h] = new int[width];
   .
   .
   .
}
Copier après la connexion
  1. Renvoyer le tableau (create2DArray() ):

    • Une fois le tableau créé, le pointeur vers la première ligne (array2D) est renvoyé. Ce pointeur représente l'ensemble du tableau.
  2. Nettoyer la mémoire (main() ) :

    • Il est crucial de libérer la mémoire allouée au tableau 2D une fois qu'elle n'est plus nécessaire. Cela implique de supprimer la mémoire de chaque ligne, puis le pointeur vers la première ligne pour éviter les fuites de mémoire.
for (int h = 0; h < height; h++) {
  delete [] array2D[h]; 
}
delete [] array2D;
Copier après la connexion

Cette approche garantit une bonne gestion de la mémoire et fournit un moyen de renvoyer un Tableau 2D à partir d'une fonction en C .

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal