Vidarebefordra en matris till en funktion C ++

Passing An Array Function C



En array är en grupp av element av samma datatyp. Många funktioner utförs på matriser antingen i huvudprogrammet eller utanför det, i funktionerna. I C ++, när det gäller funktioner, måste vi skicka dem. Detta görs via parametrar som argument. Dessa argument kan ha olika sätt, antingen stora matriser eller genom pekarrayen. I denna handledning kommer vi att täcka några viktiga aspekter av arrayöverföring med hjälp av olika parametrar för funktionerna.

Syntax

[Lämna tillbakatyp] [namnfungera] (datatypmatrisnamn[arraystorlek])

{

fungerakropp

}

Exempel 1

Tänk på ett exempel där vi måste skriva ut elevernas betyg i C ++ - programmet. Detta tryck kommer att tas i en separat funktion snarare än i huvudprogrammet. Däremot tar vi ingångar i huvudprogrammet och överför dessa värden till funktionen som en parameter. Tänk på funktionen. I dess parameter finns det en matrisdatatypvariabel som accepterar värdena för en matris. Hela matrisen deklareras här. Märkena kommer att visas med hjälp av for loop. Precis som i matriser behöver vi slingor för att få utskrift från dem.









När vi går mot huvudfunktionen deklarerar vi en matris med dess storlek och värden i den. Som vi måste kalla funktionen. Så metoden är att vi skriver funktionsnamnet med namnet på arrayen i parametern som ett argument. Vi har inte definierat matrisens storlek.



Visa(märken);

Argumentet i parametern innebär matrisens minnesadress. I parametern för funktionens rubrik omvandlas int m [7] till int *m. Detta inkluderar samma adress som den ursprungliga matrisen. När vi använder m [5] i funktionens kropp kommer vi att manipulera den ursprungliga matrisen.





Ogiltig display(int m[7] )

I Linux -operativsystemet krävs att vissa utgångskrav installeras för att få utmatning via en terminal. Den behöver en kompilator för att kompilera och sedan köra koden i kommandotolken. G ++ används i C ++ för sammanställningen.



$g ++ -ellerkod3 kod3.c

$./kod3

Där –o används för att lagra utdata från källfilen till utdatafilen.

Från utgången kan du observera att alla nummer som initieras i matrisen i huvudfunktionen skickas och visas genom displayfunktionen.

Exempel 2

Ett annat exempel när det gäller matris som passerar genom parameter är att skicka en flerdimensionell matris till funktionen. En tvådimensionell array (2d) används här. I huvudfunktionen måste vi initiera en array.

Int array[rad][kolumn]

2d -arrayinitiering inkluderar rad och kolumn. Och deras ordning ska behållas under hela programmet. 2d -array initieras med två nummer inom parentes. Som vi har beskrivit 2 kolumner i initialiseringen.

Visa(på ett);

Vi kommer bara att använda arraynamnet i parametern som ett argument.

Nu kommer vi att se hur displayfunktionen fungerar. När funktionen startas krävs en matrisvariabel för att acceptera en matris som skickas av funktionsanropet via huvudprogrammet.

Ogiltig display(int n[][2] )

Det är obligatoriskt att ange antalet kolumner. I jämförelse är det inte nödvändigt för rader. Det är därför vi har lämnat radfästen tomma här när vi använder för loop för att visa resultaten. Men när det gäller en 2-dimensionell array använder vi en kapslad för loop. Den innehåller två för påståenden med 2 variabler i dem.

Vi kan se resultatet genom att använda samma kompilator. Du kan se resultaten att varje värde visas separat med raden och kolumnnumret.

Exempel 3

Detta exempel skiljer sig lite från de tidigare. I det här exemplet nämner vi matrisstorlek i parametern för funktionsanropet. Och i funktionsdeklarationen introduceras också en variabel för att acceptera storleken på en array.

Från huvudprogrammet initieras en array med värdena.

Genomsnitt = getAverage(balans,5);

Resultatet kommer att lagras i avg -variabeln. I stället för att bara skicka matrisnamnet läggs matrisstorleken också till i parametern.

Parametern innehåller också variabeln arraytyp och en heltal datatyp för att ta emot arraystorleken. Huvudprogrammets typ är int eftersom det kommer att ta emot ett heltal från funktionen. Annars är det ogiltigt i andra fall.

Nu kommer vi att se utgången. Detta värde är synligt genom att bilden erhålls från funktionen.

Exempel 4

Detta exempel avser bestämning av det maximala antalet i matrisen, faktiskt från två matriser. Här initierar vi två matriser i huvudprogrammet. Båda matriserna skickas separat till funktionen i separata funktionsanrop

printMax(arr1);

printMax(arr2);

där printMax är namnet på funktionen och arr är matrisen. Resultatet kommer inte tillbaka från funktionen och visas där. För loop beräknar det maximala antalet i båda matriserna. If-sats används inuti for-slingan. Funktionens rubrik är:

void printMax(int arr[5])

Eftersom båda matriserna innehåller olika värden blir båda resultaten olika.

Exempel 5

Detta exempel är en sammanfattning av alla typer av matriser som passerar genom parametrarna. Dessa kan ha storleksanpassade, ostora eller pekarrayer. Vi kommer att överväga dem en efter en.

I huvudprogrammet deklareras varje funktion först. Du kan påpeka skillnaden i deras deklaration.

Int sum1(int tmp[5]);

Int sum2(int tmp[]);

Int sum3(int*tmp);

Dessa tre matriser visar att matriser kan passera med dessa parametrar i funktionen.

Efter funktionsinitialisering har vi huvudprogrammet där arrayen deklareras. Till skillnad från föregående exempel initieras en array istället för två, men den skickas på tre olika sätt. Nu kommer vi att se funktionssamtalen som görs här.

Summa = sum1(försäljning);

Totalt = sum2(försäljning);

Totalt = sume3(försäljning);

Utdata visas i huvudfunktionen, så en variabel förklaras acceptera värdet som returneras av funktionen. Av alla tre funktionssamtal kan du se att här är parametrarna desamma. Varje array innehåller bara namnet på en array. Men parametrarna för funktionen som accepterar matrisen är olika.

Den inre kroppen av alla tre funktionerna är densamma, eftersom summan av alla siffror beräknas från användningen av For loop. Metodiken och arrayens värden är desamma; bara det finns diskriminering mellan funktionernas parametrar. Därför är det bevisat att vi antingen kan använda olika metoder för att acceptera en array eller utföra samma funktionalitet, och svaret är detsamma. Vi kan bekräfta det genom att kontrollera utmatningen. Med samma kompileringsprocedur får vi utmatningen som visas i bilden nedan.

Du kan se att svaret är detsamma för alla tre funktioner som används.

Slutsats

I den här artikeln kommer användaren att lära känna passeringsmetoden för en array i parametrar. Arrays kan hanteras i många fall när det gäller att returnera värdet eller skicka det i argument.