Tablourile sunt una dintre cele mai simple forme de stocare structurată a datelor. Deoarece zonele de memorie indivizibile sunt alocate pentru stocarea matricilor unidimensionale, iar majoritatea limbajelor de programare au construcții sintactice pentru declarația lor, ele sunt utilizate intens ca tampoane pentru transferul unor cantități mari de informații către diverse funcții (inclusiv bibliotecă). La rândul lor, funcțiile trebuie uneori să returneze o matrice.
Necesar
- - editor de text;
- - compilator și linker C sau C ++.
Instrucțiuni
Pasul 1
Returnați datele dintr-o funcție sau metodă plasându-le într-o matrice de lungime fixă, alocată de apelant și trecută prin referință. Definiți tipul de date adecvat, de exemplu: typedef int t_array10 [10]; Folosiți-l în declarația și implementarea funcției sau metodei necesare: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Apelați corespunzător: int aNumbers [10]; ReturnArray (aNumbers); Dezavantajul acestei metode este că lungimea tabloului este fixă.
Pasul 2
Returnează datele matricei plasându-le într-un buffer de ieșire alocat apelantului trecut de pointer. Prototipul unei funcții sau metode poate conține un parametru declarat atât în notația matricei, fără specificarea dimensiunii: void ReturnArray (int anArray , int nSize); sau ca un pointer: void ReturnArray (int * pnArray, int nSize); În ambele cazuri, parametrul de identificare poate fi utilizat în notația matricei: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Această metodă de transmitere a matricelor către funcții și de returnare a datelor matrice de la acestea este utilizată în majoritatea covârșitoare a cazurilor atunci când se dezvoltă programe C. Rețineți că funcțiile și metodele care acceptă și returnează datele în acest mod, de regulă, trebuie să aibă un parametru suplimentar prin care este trecută dimensiunea reală a bufferului.
Pasul 3
Returnează un tablou creat într-o funcție sau metodă. În mod formal, în acest caz, nu ar trebui returnată o matrice, ci un indicator către primul său element: int * ReturnArray () {int * pnArray = new int [10]; // lucrați cu pnArray return pnArray;} // obțineți un pointer către matricea creată int * pnNumbers = ReturnArray (); // utilizați delete pnNumbers; // șterge Această metodă are unele limitări. Deci, matricea trebuie să fie localizată în heap. În plus, ștergerea acestuia trebuie făcută cu metoda corespunzătoare creației (ștergeți în cazul utilizării noului, gratuit pentru malloc etc.).
Pasul 4
Utilizați clase de containere pentru a returna convenabil matrici atunci când dezvoltați programe C ++. Un exemplu de creare și returnare a unui tablou care este un obiect al clasei de șabloane vectoriale din Biblioteca de șabloane standard C ++ specificată pentru int ar putea arăta astfel: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Rețineți că majoritatea cadrelor populare oferă clase puternice sau șabloane de clase de matrice. Ei implementează adesea conceptul de partajare implicită a datelor cu numărarea referințelor și copiere pe scriere. Prin urmare, revenirea în funcție de valoarea acestor matrici din funcții se realizează foarte eficient și este asociată cu un consum minim de resurse de calcul.