Retour array van functie C++

Return Array From Function C



Arrays zijn specifieke containers met waarden van hetzelfde gegevenstype. Functies in C++ voeren bewerkingen uit op arrays en deze arrays worden vervolgens teruggestuurd naar de hoofdfunctie. Er zijn veel manieren om dit fenomeen te beschrijven. In deze handleiding worden enkele veelvoorkomende methoden uitgelegd:

Aanwijzers gebruiken om de statische matrix te retourneren

Wanneer we een normale array gebruiken, is er een kans op een soort van abnormale resultaten. Om dit te voorkomen, gebruiken we een statische array in onze C++-code. Laten we het voorbeeld dat we hebben gebruikt begrijpen. In deze functie hebben we een array met 5 waarden gedeclareerd als het retourtype zoals hier vermeld.







Int *functie ()



Omdat de waarde een geheel getal is, wordt deze in het onderstaande voorbeeld getagd als int. Omdat we de functie als een aanwijzer hebben geïntroduceerd, zal de functie een aanwijzertype zijn. Na het invoeren van de waarden wordt een array teruggestuurd naar het hoofdprogramma.







In het hoofdprogramma hebben we een functieaanroep gedaan. Om de waarde te accepteren die door de functie wordt geretourneerd, gebruiken we een integer-variabele. Wanneer de array wordt geretourneerd, hebben we gemakkelijk toegang tot de waarden ervan. De waarden worden handmatig afgedrukt.

Int*wijzer=functie();

Het doel van de aanwijzer is om het item te lokaliseren dat aanwezig is op index één van de array. Met andere woorden, het toont het adres van de waarde in de array. Vervolgens gebruiken we een functie-prototype dat de aanwijzer zal retourneren.



Om de uitvoer van de array te zien die door de functie wordt geretourneerd, moeten we toegang hebben tot de Ubuntu-terminal in het geval van Linux. Dit komt doordat de uitvoer toegankelijk is via de Linux-terminal. In Linux hebben we een compiler nodig om C++-codes uit te voeren die in een teksteditor zijn geschreven. Deze compilatie wordt gedaan via G++. De -o wordt gebruikt om de uitvoer in een bestand op te slaan. Hier hebben we het uitvoerbestand en het broncodebestand nodig. Na compilatie zullen we de code uitvoeren:

$g++ -ofbestand1 bestand1.c
$./bestand1

Uit de uitvoer kunnen we zien dat de array, die in de functie is geïnitialiseerd, wordt weergegeven in de hoofdfunctie met behulp van een statische array, handmatig en via de aanwijzers geïnitialiseerd.

Dynamisch toegewezen array retourneren met aanwijzers

Arrays kunnen worden geretourneerd door dynamische toewijzing te gebruiken. Arrays kunnen dynamisch worden toegewezen door het woord nieuw te gebruiken. Ze blijven daar totdat we ze zelf verwijderen. Statische arrays hebben een vaste grootte, wat betekent dat u de grootte moet opgeven tijdens de initialisatie. Als de array eenmaal is gemaakt, is het moeilijk om de grootte tijdens runtime of hierna te vergroten. Maar in het geval van de dynamische array kunnen we meer items toevoegen wanneer we maar willen, omdat deze groter wordt als we er waarden in invoeren. We hoeven dus geen maat te specificeren of te identificeren.

Op weg naar het voorbeeld dat we hier hebben gebruikt. We hebben een dynamische array gebruikt met de pointers zoals in de vorige voorbeelden, waar we pointers hebben gebruikt met de statische arrays.

Int*functie()

Na functiedeclaratie worden arrays dynamisch gedeclareerd:

Int*reeks= nieuwe int [100];

De term, nieuw, wordt voortdurend gebruikt om een ​​dynamische array te creëren. We zullen bewerkingen op de array uitvoeren door er waarden in in te voeren. Daarna wordt de array teruggestuurd naar het hoofdprogramma:

Overweeg nu de hoofdfunctie. We hebben de functieaanroep gedaan. Als de array wordt geretourneerd, voegen we een variabele van het type pointer integer toe om de waarde te accepteren.

Int*wijzer=functie();

De waarden die in de array zijn opgeslagen, worden handmatig afgedrukt. De uitvoer wordt verkregen via de compilatie- en uitvoeringsmethode.

Return Array met behulp van de structuren

Structuren zijn de containers zoals arrays. Maar array bevat de waarde van hetzelfde gegevenstype tegelijk. En in het geval van structuren bevatten ze meer dan één gegevenstypewaarde. We hebben een structuur met de naam sample genomen. Hier bevindt de array-declaratie zich in de structuren in plaats van in functies. Het retourtype is de naam van de structuur. De structuurvariabele wordt teruggestuurd naar het hoofdprogramma. De structuur gebruikt het woord struct voor declaratie.

structuurvoorbeeld:
{
Int[100];
};

Na de structuurdeclaratie hebben we een functie gebruikt waarin een object van structuur wordt gemaakt. Dit object wordt gebruikt om toegang te krijgen tot de structuur. Deze functie retourneert het object van structuur naar de hoofdfunctie zodat we de array via dit object kunnen afdrukken. Een variabele krijgt de waarden in de variabele. Deze waarde is het gehele getal tot waar we waarden in de array zullen invoeren. Net als in dit voorbeeld hebben we 6 als getal gekozen. De getallen worden dus tot 6 in de array ingevoerd.

Structurele voorbeeldfunctie(intN)

Nu we naar het hoofdprogramma gaan, hebben we een object gemaakt om via dit toegang tot de array te krijgen:

Structuurvoorbeeld x;

Na objectinitialisatie wordt een waarde toegevoegd aan de variabele tot waar we de getallen in de array willen invoeren. In een functieaanroep geven we de waarde door in de parameter:

x=functie(N);

We zullen de weergave hebben met behulp van de for-lus. De waarden worden weergegeven via het object dat aan het begin van het hoofdprogramma is gedeclareerd:

De uitvoer geeft aan dat 6 waarden in het resultaat worden weergegeven, aangezien we 6 cijfers in het programma hebben ingevoerd.

Return Array met Std

C++ gebruikt veel methoden om een ​​array van de functie te retourneren. Een daarvan is via std::array. Het is een sjabloon van structuur. Deze functie biedt ook nog twee functies, namelijk size () en leeg (). Er wordt een arraynaam geretourneerd die aangeeft dat de hele array wordt geretourneerd naar het hoofdprogramma. Hier zullen we een headerbestandarray toevoegen. Naast de bibliotheek bevat het alle functies van de array.

#erbij betrekken

reeks<int,10>functie()

Omdat we de hele array met de naam ervan kunnen retourneren, dus in de declaratie van een functie, zullen we de array gebruiken als een retourtype. Gegevens worden in de array ingevoerd. Daarna wordt de array teruggestuurd naar het hoofdprogramma. In de richting van de hoofdfunctie zal een arrayvariabele de array accepteren wanneer de functie wordt aangeroepen.

arr=functie();

Nogmaals, de for-lus wordt gebruikt voor het weergeven van arraywaarden. We observeren de uitvoer van de onderstaande afbeelding. Omdat we 10 maten hebben gebruikt, worden er 0 cijfers ingevoerd. Daarom worden deze weergegeven:

Retourarray via vectorcontainer

Deze benadering is een dynamisch toegewezen array. Zoals in dit geval is het niet nodig om de arraygrootte op te geven. We hebben hier geen maatparameter nodig. Met dit voorbeeld moeten we een vectorheader toevoegen aan de bibliotheek die de functionaliteiten van de vector bevat.

Op weg naar de functie, waar het retourtype ook een int-vector is en ook een vectorpointer als argument in de parameter bevat. Een array met de naam temp wordt hier geïntroduceerd:

Vector<int>VermenigvuldigenArrayByTwo(constvector<int> *arr)

De functie vermenigvuldigt de elementen van de array met twee door de functie tmp.push_back () te gebruiken. Retourneer vervolgens de tmp. Een auto-type variabele accepteert de waarden van de array van de functie. De array bevat de items erin.

De uitvoer toont de werking van de vectorcontainer.

Conclusie

In het bovengenoemde artikel hebben we de vijf meest gebruikte methoden beschreven om de functionaliteit van het retourneren van een array uit de functie uit te leggen.