Returmatris från funktion C ++

Return Array From Function C



Arrays är specifika behållare som har värden av samma datatyp. Funktioner i C ++ utför operationer på matriser, och dessa matriser återförs sedan till huvudfunktionen. Det finns många metoder för att beskriva detta fenomen. I den här guiden förklaras några vanliga metoder:

Använd pekare för att returnera den statiska matrisen

När vi använder en normal matris finns det chanser att få någon form av onormala resultat. För att undvika detta använder vi en statisk array i vår C ++ - kod. Låt oss förstå exemplet vi har använt. I denna funktion har vi deklarerat en matris med 5 värden som returtypen som nämns här.







Int *-funktion ()



Eftersom värdet kommer att vara en heltalstyp, så är det märkt som int i exemplet nedan. Eftersom vi har introducerat funktionen som en pekare, kommer funktionen att vara en pekartyp. Efter att värdena har matats in returneras en array till huvudprogrammet.







I huvudprogrammet har vi gjort ett funktionssamtal. För att acceptera värdet som returneras från funktionen använder vi en heltalsvariabel. När matrisen returneras kan vi enkelt komma åt dess värden. Värdena skrivs ut manuellt.

Int*pekare=fungera();

Syftet med pekaren är att lokalisera objektet som finns på index ett av matrisen. Med andra ord visar det adressen för värdet i matrisen. Sedan använder vi en funktionsprototyp som returnerar pekaren.



För att se utmatningen från matrisen som returneras via funktionen måste vi ha tillgång till Ubuntu -terminalen för Linux. Detta beror på att utmatningen är tillgänglig via Linux -terminalen. I Linux behöver vi en kompilator för att köra C ++ - koder skrivna i valfri textredigerare. Denna sammanställning görs via G ++. -O används för att lagra utdata i en fil. Här behöver vi utdatafilen och källkodfilen. Efter sammanställningen kör vi koden:

$g ++ -ellerfile1 file1.c
$./fil1

Från utgången kan vi se matrisen, som initierades i funktionen, visas i huvudfunktionen med hjälp av en statisk matris, initierad manuellt och genom pekarna.

Returnera dynamiskt tilldelad matris med pekare

Matriser kan returneras med hjälp av dynamisk tilldelning. Matriser kan dynamiskt fördelas med ordet nytt. De kommer att förbli där tills vi tar bort dem själva. Statiska matriser är fasta i storlek, vilket innebär att du måste ange storlek under initialiseringen. När matrisen väl är skapad är det svårt att öka storleken vid körning eller hädanefter. Men när det gäller den dynamiska matrisen kan vi lägga till fler objekt när vi vill eftersom det expanderar när vi anger värden i det. Så vi behöver inte ange eller identifiera någon storlek.

Går mot det exempel vi har använt här. Vi har använt en dynamisk array med pekarna som i föregående exempel, där vi har använt pekare med de statiska matriserna.

Int*fungera()

Efter funktionsdeklaration deklareras matriser dynamiskt:

Int*array= ny int [100];

Termen, ny, används ständigt för att skapa en dynamisk matris. Vi kommer att utföra operationer på matrisen genom att ange värden i den. Därefter returneras matrisen till huvudprogrammet:

Tänk nu på huvudfunktionen. Vi har ringt funktionen. När matrisen returneras lägger vi till en variabel för heltalstyp för pekare för att acceptera värdet.

Int*pekare=fungera();

De värden som lagrades i matrisen skrivs ut manuellt. Utdata erhålls genom kompilerings- och körningsmetoden.

Returmatris med hjälp av strukturerna

Strukturer är behållarna som matriser. Men array innehåller värdet av samma datatyp åt gången. Och när det gäller strukturer innehåller de mer än ett datatypsvärde. Vi har tagit en struktur som heter sample. Här är arraydeklarationen inuti strukturerna istället för funktioner. Returtypen är namnet på strukturen. Strukturvariabeln returneras till huvudprogrammet. Strukturen använder ordet struct för deklaration.

Strukturprov
{
Int arr[100];
};

Efter strukturdeklarationen har vi använt en funktion där ett objekt av struktur skapas. Detta objekt kommer att användas för att komma åt strukturen. Denna funktion kommer att återföra objektet av struktur till huvudfunktionen så att vi kan skriva ut matrisen genom detta objekt. En variabel får värdena i variabeln. Det här värdet är det heltal som vi kommer att ange värden i matrisen. Som i det här exemplet har vi valt 6 som nummer. Så kommer siffrorna att matas in upp till 6 i matrisen.

Strukturprov func(intn)

Nu, mot huvudprogrammet, har vi skapat ett objekt för att komma åt matrisen genom detta:

Strukturprov x;

Efter objektinitialisering läggs ett värde till variabeln som vi vill att siffrorna ska matas in i matrisen. I ett funktionsanrop skickar vi värdet i parametern:

X=fungera(n);

Vi kommer att ha displayen med hjälp av for -slingan. Värdena visas genom det objekt som deklareras i början av huvudprogrammet:

Utdata indikerar att 6 värden visas i resultatet eftersom vi har angett 6 nummer i programmet.

Return Array Using Std

C ++ använder många metoder för att returnera en array från funktionen. En av dem är genom std :: array. Det är en mall för struktur. Denna funktion ger också ytterligare två funktioner som är storlek () och tom (). Ett arraynamn returneras som indikerar att hela arrayen returneras till huvudprogrammet. Här lägger vi till en filhuvudfil. Förutom biblioteket innehåller det alla funktioner i matrisen.

#omfatta

array<int,10>fungera()

Eftersom vi kan returnera hela arrayen med namnet på den, så i deklarationen av en funktion kommer vi att använda arrayen som en returtyp. Data matas in i matrisen. Efter det kommer matrisen att återföras till huvudprogrammet. När man rör sig mot huvudfunktionen accepterar en matrisvariabel matrisen när funktionen anropas.

arr=fungera();

Återigen, för loop kommer att användas för att visa arrayvärden. Vi observerar utmatningen från bilden som visas nedan. Eftersom vi har använt 10 storlekar kommer 0 siffror att matas in. Därför visas dessa:

Returmatris genom vektorbehållare

Detta tillvägagångssätt är en dynamiskt tilldelad array. Som i det här fallet behöver du inte ange matrisstorlek. Vi behöver inte någon storleksparameter här. Med hjälp av detta exempel måste vi lägga till en vektorhuvud i biblioteket som innehåller vektorens funktioner.

Rör sig mot funktionen, där returtypen också är en int -vektor och även innehåller en vektorpekare som ett argument i parametern. En matris med namnet temp introduceras här:

Vektor<int>MultiplyArrayByTwo(konstvektor<int> *arr)

Funktionen multiplicerar elementen i matrisen med två genom att använda funktionen tmp.push_back (). Returnera sedan tmp. En variabel av automatisk typ accepterar värdena för matrisen från funktionen. Arrayen innehåller objekten i den.

Utdata visar funktionen hos vektorbehållaren.

Slutsats

I den ovannämnda artikeln har vi beskrivit de fem mest använda metoderna för att förklara funktionaliteten för att returnera en array från funktionen.