Een array doorgeven aan een functie C++

Passing An Array Function C



Een array is een groep elementen van hetzelfde gegevenstype. Veel functies worden uitgevoerd op arrays, hetzij in het hoofdprogramma of daarbuiten, in de functies. In C++ moeten we ze in het geval van functies doorgeven. Dit gebeurt via parameters als argumenten. Deze argumenten kunnen op verschillende manieren zijn, ofwel omvangrijke arrays of via de pointer-array. In deze zelfstudie behandelen we enkele belangrijke aspecten van array-overdracht met behulp van verschillende parameters van de functies.

Syntaxis

[Opbrengsttype] [naam vanfunctie] (gegevenstypearraynaam[reeksmaat])

{

functielichaam

}

voorbeeld 1

Beschouw een voorbeeld waarin we de cijfers van studenten in het C++-programma moeten afdrukken. Deze afdruk wordt in een aparte functie gemaakt in plaats van in het hoofdprogramma. We nemen daarentegen invoer in het hoofdprogramma en dragen deze waarden als parameter over naar de functie. Denk aan de functie. In zijn parameter is er een array-datatypevariabele die de waarden van een array accepteert. De volledige array wordt hier gedeclareerd. De markeringen worden weergegeven met behulp van de for-lus. Net als in arrays hebben we lussen nodig om er afdrukken van te krijgen.









Op weg naar de hoofdfunctie declareren we een array met zijn grootte en waarden erin. Omdat we de functie moeten aanroepen. De methode is dus dat we de functienaam met de naam van de array in de parameter als argument schrijven. We hebben de grootte van de array niet gedefinieerd.



Weergave(merken);

Het argument in de parameter impliceert het geheugenadres van de array. In de parameter van de header van de functie wordt int m[7] omgezet in int *m. Dit omvat hetzelfde adres als de originele array. Wanneer we de m[5] in de hoofdtekst van de functie gebruiken, gaan we de originele array manipuleren.





Ongeldige weergave(int m[7] )

In het Linux-besturingssysteem vereist het verkrijgen van uitvoer via een terminal dat er enkele vereisten zijn geïnstalleerd. Het heeft een compiler nodig om de code te compileren en vervolgens uit te voeren in de opdrachtpromptterminal. G++ wordt gebruikt in C++ voor de compilatie.



$g++ -ofcode3 code3.c

$./code3

Waar –o wordt gebruikt om de uitvoer van het bronbestand naar het uitvoerbestand op te slaan.

Uit de uitvoer kunt u zien dat alle getallen die in de array in de hoofdfunctie zijn geïnitieerd, worden doorgegeven en weergegeven via de weergavefunctie.

Voorbeeld 2

Een ander voorbeeld met betrekking tot array die door parameter gaat, is het doorgeven van een multidimensionale array aan de functie. Hier wordt een tweedimensionale array (2d) gebruikt. In de hoofdfunctie moeten we een array initialiseren.

Int-array[rij][kolom]

2D-array-initialisatie omvat rij en kolom. En hun volgorde moet gedurende het hele programma worden behouden. 2D-array wordt geïnitialiseerd met twee cijfers tussen haakjes. Zoals we hebben beschreven 2 kolommen in de initialisatie.

Weergave(op een);

We zullen alleen de arraynaam in de parameter als argument gebruiken.

Nu gaan we de werking van de weergavefunctie bekijken. Als de functie wordt gestart, is een arrayvariabele nodig om een ​​array te accepteren die door de functieaanroep via het hoofdprogramma is doorgegeven.

Ongeldige weergave(int n[][2] )

Het is verplicht om het aantal kolommen te vermelden. Ter vergelijking: het is niet essentieel in het geval van rijen. Daarom hebben we de rijhaakjes hier leeg gelaten omdat we de for-lus gebruiken om de resultaten weer te geven. Maar in het geval van een 2-dimensionale array gebruiken we een geneste for-lus. Het bevat twee for-statements met daarin 2 variabelen.

We kunnen de uitvoer bekijken door dezelfde compiler te gebruiken. U kunt de resultaten zien dat elke waarde afzonderlijk wordt weergegeven met het rij- en het kolomnummer.

Voorbeeld 3

Dit voorbeeld wijkt een beetje af van de vorige. In dit voorbeeld noemen we array size in de parameter van de functie-aanroep. En in de functiedeclaratie wordt ook een variabele geïntroduceerd om de grootte van een array te accepteren.

Vanuit het hoofdprogramma wordt een array geïnitialiseerd met de waarden.

Gem = getAverage(evenwicht,5);

Het resultaat wordt opgeslagen in de avg-variabele. In plaats van alleen de arraynaam door te geven, wordt ook de arraygrootte aan de parameter toegevoegd.

De parameter bevat ook de array-typevariabele en een integer-gegevenstype om de arraygrootte te ontvangen. Het type van het hoofdprogramma is int omdat het een geheel getal zal ontvangen van de functie. Anders is het in andere gevallen nietig.

Nu zullen we de uitvoer zien. Deze waarde is zichtbaar door de afbeelding die wordt verkregen uit de functie.

Voorbeeld 4

Dit voorbeeld heeft betrekking op het bepalen van het maximale aantal in de array, in feite uit twee arrays. Hier initialiseren we twee arrays in het hoofdprogramma. Beide arrays worden afzonderlijk aan de functie doorgegeven in afzonderlijke functieaanroepen

printMax(arr1);

printMax(arr2);

waarbij printMax de naam van de functie is en arr de array. Het resultaat komt niet terug uit de functie en wordt daar weergegeven. For loop berekent het maximale aantal in beide arrays. If-statement wordt gebruikt in de for-lus. De kop van de functie is:

ongeldige afdrukMax(int arr[5])

Aangezien beide arrays verschillende waarden bevatten, zullen beide resultaten verschillend zijn.

Voorbeeld 5

Dit voorbeeld is de samenvatting van alle typen arrays die door de parameters gaan. Dit kunnen sized, unsized of pointer-arrays zijn. We zullen ze één voor één bekijken.

In het hoofdprogramma wordt elke functie eerst gedeclareerd. U kunt het verschil aangeven in hun aangifte.

Int som1(int tmp[5]);

Int som2(int tmp[]);

Int som3(int*tmp);

Deze drie arrays laten zien dat arrays kunnen worden doorgegeven met deze parameters in de functie.

Na de functie-initialisatie hebben we het hoofdprogramma waarin de array wordt gedeclareerd. In tegenstelling tot het vorige voorbeeld wordt één array geïnitialiseerd in plaats van twee, maar deze wordt op drie verschillende manieren doorgegeven. Nu zullen we de functie-aanroepen zien die hier zijn gemaakt.

Totaal = som1(verkoop);

Totaal =som2(verkoop);

Totaal = som3(verkoop);

De uitvoer wordt weergegeven in de hoofdfunctie, dus een variabele wordt gedeclareerd om de waarde te accepteren die door de functie wordt geretourneerd. Van alle drie de functie-aanroepen kun je zien dat hier de parameters hetzelfde zijn. Elke array bevat alleen de naam van een array. Maar de parameters van de functie die de array accepteert, zijn anders.

Het binnenste van alle drie de functies is hetzelfde, omdat de som van alle getallen wordt berekend op basis van het gebruik van de For-lus. De methodologie en de waarden van de array zijn hetzelfde; alleen is er onderscheid tussen de parameters van de functies. Het is dus bewezen dat we ofwel verschillende methoden kunnen gebruiken om een ​​array te accepteren of dezelfde functionaliteit kunnen uitvoeren, en het antwoord is hetzelfde. We kunnen dit bevestigen door de uitvoer te controleren. Met dezelfde compilatieprocedure krijgen we de uitvoer die wordt weergegeven in de onderstaande afbeelding.

U kunt zien dat het antwoord voor alle drie de gebruikte functies hetzelfde is.

Conclusie

In dit artikel komt de gebruiker meer te weten over de passeermethode van een array in parameters. Arrays kunnen in veel gevallen worden gebruikt als het gaat om het retourneren van de waarde of het doorgeven ervan in argumenten.