Les matrius són una de les formes d’emmagatzematge de dades estructurades més senzilles. Atès que les àrees de memòria indivisibles s’assignen per emmagatzemar matrius unidimensionals i la majoria de llenguatges de programació tenen construccions sintàctiques per a la seva declaració, s’utilitzen intensament com a memòria intermèdia per transferir grans quantitats d’informació a diverses funcions (inclosa la biblioteca). Al seu torn, les funcions de vegades necessiten retornar una matriu.
Necessari
- - editor de text;
- - Compilador i enllaçador C o C ++.
Instruccions
Pas 1
Torneu les dades d'una funció o mètode col·locant-les en una matriu de longitud fixa, assignades per la persona que truca i passades per referència. Definiu el tipus de dades adequat, per exemple: typedef int t_array10 [10]; Utilitzeu-lo a la declaració i implementació de la funció o mètode requerit: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Truqueu adequadament: int aNumbers [10]; ReturnArray (aNumbers); L'inconvenient d'aquest mètode és que la longitud de la matriu és fixa.
Pas 2
Torneu les dades de la matriu col·locant-les en una memòria intermèdia de sortida assignada per la persona que truca passant pel punter. El prototip d'una funció o mètode pot contenir un paràmetre declarat tant en notació de matriu sense especificació de mida: void ReturnArray (int anArray , int nSize); o com a punter: void ReturnArray (int * pnArray, int nSize); casos, el paràmetre identificador es pot utilitzar en la notació de matriu: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Aquest mètode per passar matrius a funcions i retornar-ne les dades de matriu s’utilitza en la immensa majoria dels casos quan es desenvolupen programes C. Tingueu en compte que les funcions i mètodes que accepten i retornen dades d'aquesta manera, per regla general, han de tenir un paràmetre addicional a través del qual es passi la mida real del buffer.
Pas 3
Retorna una matriu creada en una funció o mètode. Formalment, en aquest cas, no s'hauria de retornar una matriu, sinó un punter al seu primer element: int * ReturnArray () {int * pnArray = new int [10]; // treballar amb pnArray return pnArray;} // obtenir un punter a la matriu creada int * pnNumbers = ReturnArray (); // use delete pnNumbers; // esborra Aquest mètode té algunes limitacions. Per tant, la matriu s’ha de situar en un munt. A més, la seva eliminació s’ha de fer amb el mètode corresponent a la creació (suprimir en el cas d’utilitzar new, free for malloc, etc.).
Pas 4
Utilitzeu classes de contenidors per retornar convenientment matrius quan desenvolupeu programes C ++. Un exemple de creació i devolució d'una matriu que sigui un objecte de la classe de plantilla vectorial de la Biblioteca de plantilles estàndard C ++ especificada per int podria ser així: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Tingueu en compte que la majoria dels marcs populars ofereixen classes potents o plantilles de classes de matriu. Sovint implementen el concepte de compartició de dades implícita amb el recompte de referències i la còpia en escriptura. Per tant, el retorn per valor d’aquestes matrius de les funcions es realitza de manera molt eficient i s’associa amb un consum mínim de recursos informàtics.