Les tableaux sont l'une des formes les plus simples de stockage de données structurées. Étant donné que des zones de mémoire indivisibles sont allouées pour stocker des tableaux à une dimension et que la plupart des langages de programmation ont des constructions syntaxiques pour leur déclaration, elles sont intensivement utilisées comme tampons pour transférer de grandes quantités d'informations vers diverses fonctions (y compris la bibliothèque). À leur tour, les fonctions doivent parfois renvoyer un tableau.
Nécessaire
- - éditeur de texte;
- - Compilateur et éditeur de liens C ou C++.
Instructions
Étape 1
Renvoie les données d'une fonction ou d'une méthode en les plaçant dans un tableau de longueur fixe, alloué par l'appelant et passé par référence. Définissez le type de données approprié, par exemple: typedef int t_array10 [10]; Utilisez-le dans la déclaration et l'implémentation de la fonction ou méthode requise: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Appelez de manière appropriée: int aNumbers [10]; ReturnArray (aNumbers); L'inconvénient de cette méthode est que la longueur du tableau est fixe.
Étape 2
Renvoie les données du tableau en les plaçant dans un tampon de sortie alloué à l'appelant passé par un pointeur. Le prototype d'une fonction ou d'une méthode peut contenir un paramètre déclaré à la fois en notation de tableau sans spécification de taille: void ReturnArray (int anArray , int nSize); ou en tant que pointeur: void ReturnArray (int * pnArray, int nSize); dans les deux cas, le paramètre identifiant peut être utilisé en notation de tableau: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Cette méthode de transmission de tableaux aux fonctions et de renvoi des données de tableau à partir d'eux est utilisée dans la très grande majorité des cas lors du développement de programmes C. Notez que les fonctions et méthodes qui acceptent et renvoient des données de cette manière, en règle générale, doivent avoir un paramètre supplémentaire par lequel la taille réelle du tampon est transmise.
Étape 3
Renvoie un tableau créé dans une fonction ou une méthode. Formellement, dans ce cas, ce n'est pas un tableau qui doit être renvoyé, mais un pointeur vers son premier élément: int * ReturnArray () {int * pnArray = new int [10]; // fonctionne avec pnArray return pnArray;} // obtient un pointeur vers le tableau créé int * pnNumbers = ReturnArray (); // utilise delete pnNumbers; // delete Cette méthode a quelques limitations. Ainsi, le tableau doit être situé dans le tas. De plus, sa suppression doit se faire avec la méthode correspondant à la création (delete en cas d'utilisation de new, free for malloc, etc.).
Étape 4
Utilisez des classes de conteneur pour renvoyer facilement des tableaux lors du développement de programmes C ++. Un exemple de création et de renvoi d'un tableau qui est un objet de la classe de modèles vectoriels de la bibliothèque de modèles standard C ++ spécifiée pour int peut ressembler à ceci: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oTableau [0] = 100; oTableau [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Notez que la plupart des frameworks populaires fournissent des classes puissantes ou des modèles de classe de tableau. Ils implémentent souvent le concept de partage de données implicite avec comptage de références et copie sur écriture. Par conséquent, le retour par valeur de tels tableaux à partir de fonctions est effectué de manière très efficace et est associé à une consommation minimale de ressources de calcul.