Arrays zijn een van de eenvoudigste vormen van gestructureerde gegevensopslag. Omdat ondeelbare geheugengebieden zijn toegewezen voor het opslaan van eendimensionale arrays, en de meeste programmeertalen syntactische constructies hebben voor hun declaratie, worden ze intensief gebruikt als buffers voor het overbrengen van grote hoeveelheden informatie naar verschillende (inclusief bibliotheek)functies. Op hun beurt moeten functies soms een array retourneren.
Noodzakelijk
- - tekstverwerker;
- - C of C++ compiler en linker.
instructies:
Stap 1
Retourneer gegevens van een functie of methode door deze in een array met een vaste lengte te plaatsen, toegewezen door de aanroeper en door te geven als referentie. Definieer het juiste gegevenstype, bijvoorbeeld: typedef int t_array10 [10]; Gebruik het in de declaratie en implementatie van de vereiste functie of methode: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Roep op de juiste manier aan: int aNumbers [10]; ReturnArray (aNumbers); Het nadeel van deze methode is dat de lengte van de array vast ligt.
Stap 2
Retourneer de arraygegevens door deze in een door de aanwijzer toegewezen uitvoerbuffer te plaatsen. Het prototype van een functie of methode kan een parameter bevatten die zowel in array-notatie is gedeclareerd zonder groottespecificatie: void ReturnArray (int anArray , int nSize); of als een pointer: void ReturnArray (int * pnArray, int nSize); in beide gevallen kan de identifier-parameter worden gebruikt in array-notatie: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Deze methode voor het doorgeven van arrays aan functies en het retourneren van arraygegevens van hen wordt in de overgrote meerderheid van de gevallen gebruikt bij het ontwikkelen van C-programma's. Merk op dat functies en methoden die op deze manier gegevens accepteren en retourneren, moeten in de regel een extra parameter hebben waardoor de werkelijke grootte van de buffer wordt doorgegeven.
Stap 3
Retourneer een array die is gemaakt in een functie of methode. Formeel zou in dit geval geen array moeten worden geretourneerd, maar een verwijzing naar het eerste element: int * ReturnArray () {int * pnArray = new int [10]; // werk met pnArray return pnArray;} // haal een verwijzing naar de gemaakte array int * pnNumbers = ReturnArray (); // gebruik delete pnNumbers; // delete Deze methode heeft enkele beperkingen. De array moet zich dus in de heap bevinden. Bovendien moet de verwijdering worden gedaan met de methode die overeenkomt met de creatie (verwijderen in het geval van gebruik van nieuw, gratis voor malloc, enz.).
Stap 4
Gebruik containerklassen om gemakkelijk arrays te retourneren bij het ontwikkelen van C++-programma's. Een voorbeeld van het maken en retourneren van een array die een object is van de vectorsjabloonklasse van de C++ Standard Template Library gespecificeerd voor int, kan er als volgt uitzien: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Merk op dat de meeste populaire frameworks krachtige klassen of arrayklasse-sjablonen bieden. Ze implementeren vaak het concept van impliciete gegevensuitwisseling met referentietelling en copy-on-write. Daarom wordt het op waarde teruggeven van dergelijke arrays van functies zeer efficiënt uitgevoerd en gaat het gepaard met een minimaal verbruik van computerbronnen.