Maison >développement back-end >C++ >Comment puis-je renvoyer un tableau 2D à partir d'une fonction 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é.
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 ].
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; }
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;
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!