Posredovanje niza funkciji C ++

Passing An Array Function C



Niz je skupina elementov istega tipa podatkov. Mnoge funkcije se izvajajo v nizih v glavnem programu ali zunaj njega, v funkcijah. V C ++ jih moramo v primeru funkcij posredovati. To se naredi prek parametrov kot argumentov. Ti argumenti so lahko različni, bodisi v velikih matrikah bodisi v nizu kazalcev. V tej vadnici bomo obravnavali nekatere glavne vidike prenosa matrike z uporabo različnih parametrov funkcij.

Sintaksa

[Vrnitevtip] [ime osebefunkcijo] (podatkovtipime polja[matrikovelikost])

{

funkcijotelo

}

Primer 1

Razmislite o primeru, v katerem moramo natisniti ocene študentov v programu C ++. Ta natis bo posnet v ločeni funkciji in ne v glavnem programu. Nasprotno, v glavnem programu bomo vzeli vnose in te vrednosti prenesli v funkcijo kot parameter. Upoštevajte funkcijo. V svojem parametru je spremenljivka podatkovnega tipa matrike, ki bo sprejela vrednosti matrike. Tu je naveden celoten niz. Oznake bodo prikazane s pomočjo zanke for. Tako kot v nizih potrebujemo zanke, da iz njih dobimo tisk.









Če se premaknemo proti glavni funkciji, razglasimo matriko z njeno velikostjo in vrednostmi. Kot moramo poklicati funkcijo. Metoda je torej ta, da v funkcijo kot argument zapišemo ime funkcije z imenom matrike. Nimamo definirane velikosti matrike.



Zaslon(oznake);

Argument v parametru pomeni naslov pomnilnika matrike. V parametru glave funkcije se int m [7] pretvori v int *m. To vključuje isti naslov kot prvotna matrika. Ko uporabimo m [5] v telesu funkcije, bomo manipulirali z izvirno matriko.





Prikaz praznine(int m[7] )

V operacijskem sistemu Linux pridobivanje izhoda prek terminala zahteva namestitev nekaterih predpogojev. Za sestavljanje in izvedbo kode v terminalu ukaznega poziva potrebuje prevajalnik. G ++ se uporablja v C ++ za kompilacijo.



$g ++ -alicode3 code3.c

$./koda3

Kje –o se uporablja za shranjevanje izhoda iz izvorne datoteke v izhodno datoteko.

Iz izhoda lahko opazite, da so vse številke, ki se začnejo v matriki v glavni funkciji, posredovane in prikazane skozi funkcijo prikaza.

Primer 2

Drug primer v zvezi s prenosom matrike skozi parameter je posredovanje večdimenzionalne matrike funkciji. Tu se uporablja dvodimenzionalna matrika (2d). V glavni funkciji moramo inicializirati matriko.

Int array[vrstici][stolpec]

Inicializacija 2d niza vključuje vrstico in stolpec. Njihovo zaporedje je treba ohraniti v celotnem programu. 2d matrika se inicializira z dvema številkama v oklepajih. Kot smo opisali 2 stolpca pri inicializaciji.

Zaslon(na enem);

Ime parametra bomo uporabili le kot argument.

Zdaj si bomo ogledali delovanje funkcije prikaza. Ko se funkcija zažene, spremenljivka niza sprejme niz, ki ga klic funkcije posreduje skozi glavni program.

Prikaz praznine(int n[][2] )

Obvezno je omeniti število stolpcev. Za primerjavo, to ni bistveno v primeru vrstic. Zato smo tukaj oklepaje vrstic pustili prazne, ko uporabljamo zanko for za prikaz rezultatov. Toda v primeru 2-dimenzionalne matrike uporabljamo ugnezdeno zanko for. Vsebuje dve izjavi z dvema spremenljivkama.

Rezultat si lahko ogledamo z uporabo istega prevajalnika. Rezultate lahko vidite, da je vsaka vrednost prikazana ločeno z vrstico in številko stolpca.

Primer 3

Ta primer je nekoliko drugačen od prejšnjih. V tem primeru v parametru klica funkcije omenjamo velikost matrike. V deklaraciji funkcije je spremenjena tudi spremenljivka, ki sprejme velikost matrike.

Od glavnega programa se niz inicializira z vrednostmi.

avg = getAverage(ravnovesje,5);

Rezultat bo shranjen v spremenljivki avg. Namesto podajanja samo imena polja se parametru doda tudi velikost polja.

Parameter vsebuje tudi spremenljivko vrste matrike in celoštevilski podatkovni tip za sprejem velikosti matrike. Vrsta glavnega programa je int, ker bo od funkcije prejel celoštevilčno vrednost. V nasprotnem primeru je v drugih primerih neveljaven.

Zdaj bomo videli rezultat. Ta vrednost je vidna skozi sliko, pridobljeno iz funkcije.

Primer 4

Ta primer se nanaša na določanje največjega števila v matriki iz dveh nizov. Tukaj inicializiramo dva niza v glavnem programu. Oba polja se ločeno posredujeta funkciji v ločenih klicih funkcij

printMax(arr1);

printMax(arr2);

kjer je printMax ime funkcije in arr polje. Rezultat se ne vrne iz funkcije in se prikaže tam. For zanka bo izračunala največje število v obeh nizih. If-stavek se uporablja znotraj for zanke. Glava funkcije je:

void printMax(int pr[5])

Ker oba niza vsebujeta različne vrednosti, bosta oba rezultata različna.

Primer 5

Ta primer je povzetek vseh vrst nizov, ki prehajajo skozi parametre. Ti so lahko velikosti, velikosti ali kazalci. Upoštevali jih bomo enega za drugim.

V glavnem programu se vsaka funkcija najprej razglasi. Opazite lahko razliko v njihovi izjavi.

Vsota 1(int tmp[5]);

Int sum2(int tmp[]);

Skratka 3(int*tmp);

Ti trije nizi prikazujejo, da je mogoče prenesti matrike s temi parametri v funkciji.

Po inicializaciji funkcije imamo glavni program, v katerem je matrika deklarirana. Za razliko od prejšnjega primera se ena matrika inicializira namesto dveh, vendar se posreduje na tri različne načine. Zdaj bomo videli tukaj opravljene klice funkcij.

Skupaj = vsota1(prodaja);

Skupaj = vsota2(prodaja);

Skupaj = sume3(prodaja);

Izhod je prikazan v glavni funkciji, zato je spremenljivka deklarirana tako, da sprejme vrednost, ki jo funkcija vrne. Iz vseh treh klicev funkcij lahko vidite, da so tukaj parametri enaki. Vsako polje vsebuje samo ime matrike. Toda parametri funkcije, ki sprejema matriko, so različni.

Notranje telo vseh treh funkcij je enako, saj se vsota vseh števil izračuna iz uporabe zanke For. Metodologija in vrednosti matrike so enake; obstaja le razlika med parametri funkcij. Zato je dokazano, da lahko za sprejem matrike uporabimo različne metode ali izvedemo isto funkcionalnost, odgovor pa je enak. To lahko potrdimo s preverjanjem izhoda. Z istim postopkom kompilacije dobimo izhod, prikazan na spodnji sliki.

Vidite lahko, da je odgovor enak za vse tri uporabljene funkcije.

Zaključek

V tem članku bo uporabnik spoznal način prenosa matrike v parametrih. Nize je mogoče v mnogih primerih obravnavati, ko gre za vrnitev vrednosti ali posredovanje v argumentih.