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

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

Linda Hamilton
Libérer: 2024-12-08 15:36:13
original
367 Les gens l'ont consulté

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

Renvoi de tableaux 2D dans les fonctions C

En C, lorsque l'on travaille avec des tableaux et des fonctions, il est souvent nécessaire de renvoyer des tableaux multidimensionnels. Cet article aborde la question spécifique de savoir comment renvoyer un tableau 2D à partir d'une fonction en C.

La tentative de code fournie, MakeGridOfCounts(), vise à renvoyer un tableau 2D mais échoue en raison de la dégradation du tableau. Au lieu de cela, pour renvoyer correctement un tableau 2D, un pointeur vers le tableau doit être renvoyé.

Création dynamique de tableaux 2D

Pour surmonter les limites des tableaux statiques, C propose un moyen de créer des tableaux multidimensionnels dynamiquement. Le code suivant montre comment créer un nouveau tableau 2D sur le tas :

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;
}
Copier après la connexion

Cette fonction prend deux paramètres, hauteur et largeur, et renvoie un pointeur vers un tableau 2D nouvellement créé de taille [hauteur x largeur ].

Renvoi du pointeur

Pour renvoyer le tableau 2D créé dynamiquement à partir d'une fonction, un pointeur vers le tableau est renvoyé. Ce pointeur pointe vers le premier élément du tableau et donne accès à l'ensemble du tableau :

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

Nettoyage de la mémoire

Lorsque vous travaillez avec des tableaux alloués dynamiquement, il est crucial de ne pas oublier de nettoyer le mémoire après utilisation. Sinon, des fuites de mémoire peuvent survenir :

for (int h = 0; h < height; h++) {
  delete[] my2DArray[h];
}
delete[] my2DArray;
my2DArray = 0;
Copier après la connexion

Conclusion

En suivant les techniques décrites ci-dessus, vous pouvez renvoyer efficacement des tableaux 2D à partir de fonctions en C . N'oubliez pas de créer le tableau de manière dynamique pour éviter les limitations des tableaux statiques et nettoyer la mémoire allouée après utilisation.

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