Nizovi su jedan od najjednostavnijih oblika strukturirane pohrane podataka. Budući da su nedjeljiva memorijska područja dodijeljena za pohranu jednodimenzionalnih nizova, a većina programskih jezika ima sintaktičke konstrukcije za njihovo deklariranje, oni se intenzivno koriste kao međuspremnici za prijenos velike količine informacija u razne (uključujući knjižnične) funkcije. Zauzvrat, funkcije ponekad trebaju vratiti niz.
Potrebno
- - uređivač teksta;
- - C ili C ++ kompajler i povezivač.
Upute
Korak 1
Vrati podatke iz funkcije ili metode stavljanjem u niz fiksne duljine, dodijeljen od strane pozivatelja i proslijeđen referencom. Definirajte odgovarajući tip podataka, na primjer: typedef int t_array10 [10]; Koristite ga u deklaraciji i provedbi potrebne funkcije ili metode: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Pozovite na odgovarajući način: int aNumbers [10]; ReturnArray (aNumbers); Nedostatak ove metode je što je duljina niza fiksna.
Korak 2
Vratite podatke niza smještanjem u izlazni međuspremnik dodijeljen pozivaocu koji je proslijedio pokazivač. Prototip funkcije ili metode može sadržavati parametar deklariran u notaciji polja bez specifikacije veličine: void ReturnArray (int anArray , int nSize); ili kao pokazivač: void ReturnArray (int * pnArray, int nSize); U oba slučajevi, parametar identifikatora može se koristiti u notaciji niza: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // pozovite int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Ova metoda prosljeđivanja polja funkcijama i vraćanje podataka niza iz njih koristi se u pretežnoj većini slučajeva pri razvoju programa C. Imajte na umu da funkcije i metode koje na taj način prihvaćaju i vraćaju podatke, u pravilu moraju imati dodatni parametar kroz koji se prenosi stvarna veličina međuspremnika.
3. korak
Vrati niz stvoren u funkciji ili metodi. Formalno, u ovom slučaju ne treba vraćati niz, već pokazivač na njegov prvi element: int * ReturnArray () {int * pnArray = new int [10]; // rad s pnArray return pnArray;} // dobiti pokazivač na stvoreni niz int * pnNumbers = ReturnArray (); // koristiti delete pnNumbers; // brisanje Ova metoda ima određena ograničenja. Dakle, niz se mora nalaziti u hrpi. Osim toga, njegovo brisanje mora se izvršiti metodom koja odgovara stvaranju (obrisati u slučaju upotrebe novog, besplatnog za malloc itd.).
4. korak
Koristite klase spremnika da biste prikladno vratili nizove pri razvoju programa C ++. Primjer kreiranja i vraćanja niza koji je objekt klase vektorskog predloška C ++ biblioteke standardnih predložaka specificirane za int mogao bi izgledati ovako: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Imajte na umu da većina popularnih okvira nudi moćne klase ili predloške klasa polja. Često primjenjuju koncept implicitne razmjene podataka s brojanjem referenci i kopiranjem na pisanje. Stoga se vraćanje vrijednosti takvih polja iz funkcija izvodi vrlo učinkovito i povezano je s minimalnom potrošnjom računalnih resursa.