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
Linda Hamiltonoriginal
2024-12-08 15:36:13339parcourir

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

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

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;

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!

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