Massiivi edastamine funktsioonile C ++

Passing An Array Function C



Massiiv on sama andmetüübi elementide rühm. Paljusid funktsioone täidetakse massiividega kas põhiprogrammis või väljaspool seda, funktsioonides. C ++ puhul peame funktsioonide puhul need edasi andma. Seda tehakse parameetrite kaudu argumentidena. Need argumendid võivad olla mitmel viisil, kas suured massiivid või osuti massiivi kaudu. Selles õpetuses käsitleme massiiviülekande mõningaid peamisi aspekte, kasutades funktsioonide erinevaid parameetreid.

Süntaks

[Tagasitüüpi] [nimifunktsiooni] (andmedtüüpimassiivi nimi[massiivsuurus])

{

funktsioonikeha

}

Näide 1

Vaatleme näidet, milles peame C ++ programmi õpilaste märgid trükkima. Seda trükist võetakse pigem eraldi funktsioonina kui põhiprogrammis. Seevastu võtame põhiprogrammi sisendid ja kanname need väärtused parameetrina funktsioonile üle. Mõelge funktsioonile. Selle parameetris on massiivi andmetüübi muutuja, mis aktsepteerib massiivi väärtusi. Siin on deklareeritud kogu massiiv. Märgid kuvatakse silmuse abil. Nagu massiivide puhul, vajame neist silmuseid, et neist printida.









Põhifunktsiooni poole liikudes deklareerime massiivi koos selle suuruse ja väärtustega. Nagu me peame funktsiooni kutsuma. Seega meetod on see, et kirjutame argumendina parameetrisse funktsiooni nime koos massiivi nimega. Me ei ole massiivi suurust määratlenud.



Ekraan(märke);

Parameetri argument eeldab massiivi mäluaadressi. Funktsiooni päise parameetris teisendatakse int m [7] int *m -ks. See hõlmab sama aadressi nagu algne massiiv. Kui kasutame funktsiooni põhiosas m [5], hakkame manipuleerima algse massiiviga.





Tühi kuva(int m[7] )

Linuxi operatsioonisüsteemis nõuab väljundi hankimine terminali kaudu mõningaid eeltingimusi. Koodi kompileerimiseks ja seejärel käsuviiba terminalis käivitamiseks on vaja kompilaatorit. Koostamisel kasutatakse C ++ -is G ++.



$g ++ -võikood3 kood3.c

$./kood3

Kus –o kasutatakse lähtefaili väljundi salvestamiseks väljundfaili.

Väljundist saate jälgida, et kõik põhifunktsiooni massiivi algatatud numbrid edastatakse ja kuvatakse kuvamisfunktsiooni kaudu.

Näide 2

Teine näide parameetrit läbiva massiivi kohta on mitmemõõtmelise massiivi edastamine funktsioonile. Siin kasutatakse kahemõõtmelist massiivi (2d). Põhifunktsioonis peame initsieerima massiivi.

Int massiiv[rida][veerg]

2d massiivi initsialiseerimine sisaldab rida ja veerge. Ja nende järjekord tuleb säilitada kogu programmi vältel. 2d massiiv lähtestatakse sulgudes kahe numbriga. Nagu oleme initsialiseerimisel kirjeldanud 2 veergu.

Ekraan(ühe peale);

Me kasutame parameetris ainult massiivi nime argumendina.

Nüüd vaatame ekraanifunktsiooni toimimist. Funktsiooni käivitamisel kulub massiivi muutujale, et aktsepteerida funktsioonikõne põhiprogrammi kaudu edastatud massiivi.

Tühi kuva(int n[][2] )

Veergude arv on kohustuslik mainida. Võrdluseks - see ei ole ridade puhul hädavajalik. Seetõttu jätsime reasulud siia tühjaks, kuna kasutame tulemuste kuvamiseks silmust. Kuid kahemõõtmelise massiivi puhul kasutame silmuse jaoks pesastatud. See sisaldab kahte lauset, milles on 2 muutujat.

Väljundit saame vaadata sama kompilaatori abil. Näete tulemusi, et iga väärtus kuvatakse eraldi koos rea ja veeru numbriga.

Näide 3

See näide erineb pisut eelmistest. Selles näites mainime funktsioonikõne parameetris massiivi suurust. Funktsioonideklaratsioonis on ka massiivi suuruse aktsepteerimiseks sisse toodud muutuja.

Alates põhiprogrammist lähtestatakse massiiv väärtustega.

Keskm = getAverage(tasakaal,5);

Tulemus salvestatakse muutuja avg. Ainult massiivi nime edastamise asemel lisatakse parameetrile ka massiivi suurus.

Parameeter sisaldab ka massiivi tüüpi muutujat ja täisarvulist andmetüüpi massiivi suuruse saamiseks. Põhiprogrammi tüüp on int, kuna see saab funktsioonilt täisarvu. Vastasel juhul on see muudel juhtudel tühine.

Nüüd näeme väljundit. See väärtus on nähtav läbi pildi, mis on saadud funktsioonist.

Näide 4

See näide on seotud massiivi maksimaalse arvu määramisega tegelikult kahest massiivist. Siin lähtestame põhiprogrammis kaks massiivi. Mõlemad massiivid edastatakse funktsioonile eraldi eraldi funktsioonikõnedes

printMax(arr1);

printMax(arr2);

kus printMax on funktsiooni nimi ja arr on massiiv. Tulemus funktsioonist ei naase ja see kuvatakse seal. Tsükli jaoks arvutatakse mõlema massiivi maksimaalne arv. If-lauset kasutatakse for-ahela sees. Funktsiooni päis on järgmine:

tühine printMax(int arr[5])

Kuna mõlemad massiivid sisaldavad erinevaid väärtusi, on mõlemad tulemused erinevad.

Näide 5

See näide on kokkuvõte kõikidest parameetreid läbivatest massiividest. Need võivad olla suurusega, mõõtmeteta või osuti massiivid. Me kaalume neid ükshaaval.

Põhiprogrammis deklareeritakse kõigepealt iga funktsioon. Nende deklaratsioonis saate välja tuua erinevuse.

Sisesumma 1(int tmp[5]);

Int sum 2(int tmp[]);

Int sum 3(int*tmp);

Need kolm massiivi kujutavad, et massiive saab edasi anda, omades neid parameetreid funktsioonis.

Pärast funktsiooni lähtestamist on meil põhiprogramm, milles massiiv deklareeritakse. Erinevalt eelmisest näitest lähtestatakse kahe massiivi asemel üks massiiv, kuid see edastatakse kolmel erineval viisil. Nüüd näeme siin tehtud funktsioonikõnesid.

Kokku = summa1(müük);

Kokku = summa2(müük);

Kokku = sume3(müük);

Väljund kuvatakse põhifunktsioonis, seega deklareeritakse muutuja aktsepteerima funktsiooni tagastatud väärtust. Kõigist kolmest funktsioonikutsest näete, et siin on parameetrid samad. Iga massiiv sisaldab ainult massiivi nime. Kuid massiivi aktsepteeriva funktsiooni parameetrid on erinevad.

Kõigi kolme funktsiooni sisemine osa on sama, kuna kõigi numbrite summa arvutatakse funktsiooni For loop kasutamise põhjal. Metoodika ja massiivi väärtused on samad; ainult eristatakse funktsioonide parameetreid. Seega on tõestatud, et saame massiivi aktsepteerimiseks kasutada erinevaid meetodeid või teha sama funktsionaalsust ja vastus on sama. Saame seda kinnitada, kontrollides väljundit. Sama kompileerimisprotseduuri kasutades saame väljundi, mis on näidatud alloleval pildil.

Näete, et vastus on kõigi kolme kasutatud funktsiooni puhul sama.

Järeldus

Selles artiklis saab kasutaja teada massiivi edastamismeetodist parameetrites. Massiive saab paljudel juhtudel käsitleda, kui tegemist on väärtuse tagastamise või argumentides edastamisega.