Matriisin välittäminen funktiolle C ++

Passing An Array Function C

Taulukko on ryhmä samaa tietotyyppiä olevia elementtejä. Monet toiminnot suoritetaan matriiseille joko pääohjelmassa tai sen ulkopuolella, funktioissa. C ++: ssa funktioiden tapauksessa meidän on välitettävä ne. Tämä tehdään parametrien avulla argumentteina. Nämä argumentit voivat olla erilaisia, joko suuria matriiseja tai osoitinmatriisin kautta. Tässä opetusohjelmassa käymme läpi joitakin tärkeimpiä matriisisiirron toimintoja käyttämällä eri parametreja.

Syntaksi

[Palatatyyppi] [nimitoiminto] (tiedottyyppiarrayname[matriisikoko])

{

toimintovartalo

}

Esimerkki 1

Harkitse esimerkkiä, jossa meidän on tulostettava C ++ -ohjelman opiskelijoiden arvosanat. Tämä tuloste otetaan erillisessä toiminnossa eikä pääohjelmassa. Sitä vastoin otamme syötteet pääohjelmaan ja siirrämme nämä arvot funktiolle parametriksi. Harkitse toimintoa. Sen parametrissa on taulukon tietotyyppimuuttuja, joka hyväksyy taulukon arvot. Koko taulukko on ilmoitettu täällä. Merkit näytetään silmukan avulla. Kuten matriiseissa, tarvitsemme silmukoita, jotta voimme tulostaa niistä.





Siirryttäessä kohti päätoimintoa julistamme taulukon, jossa on sen koko ja arvot. Kuten meidän on kutsuttava funktio. Menetelmä on siis, että kirjoitamme funktion nimen parametrin taulukon nimen kanssa argumenttina. Emme ole määrittäneet taulukon kokoa.



Näyttö(merkit);

Parametrin argumentti viittaa taulukon muistiosoitteeseen. Funktion otsikon parametrissa int m [7] muunnetaan int *m: ksi. Tämä sisältää saman osoitteen kuin alkuperäinen matriisi. Kun käytämme funktion rungossa m [5], aiomme manipuloida alkuperäistä matriisia.

Tyhjä näyttö(int m[7] )

Linux -käyttöjärjestelmässä tuloksen saaminen päätelaitteen kautta vaatii joitakin edellytyksiä. Se tarvitsee kääntäjän kääntääkseen ja suorittaakseen koodin komentokehotteessa. G ++: ta käytetään käännöksessä C ++: ssa.



$g ++ -taikoodi3 koodi3.c

$./koodi 3

Missä –o käytetään tulosten tallentamiseen lähdetiedostosta lähtötiedostoon.

Lähdöstä voit havaita, että kaikki päätoiminnon taulukossa aloitetut numerot ohitetaan ja näytetään näyttötoiminnon kautta.

Esimerkki 2

Toinen esimerkki parametrin läpi kulkevasta taulukosta on moniulotteisen matriisin siirtäminen funktiolle. Tässä käytetään kaksiulotteista matriisia (2d). Päätoiminnossa meidän on alustettava taulukko.

Int -taulukko[rivi][sarake]

2d -matriisin alustus sisältää rivin ja sarakkeen. Ja heidän järjestyksensä on säilytettävä koko ohjelman ajan. 2d -matriisi alustetaan kahdella numerolla suluissa. Kuten olemme kuvanneet 2 saraketta alustuksessa.

Näyttö(yhdellä);

Käytämme parametrin taulukon nimeä vain argumenttina.

Nyt tarkastelemme näyttötoiminnon toimintaa. Kun toiminto käynnistetään, matriisimuuttuja hyväksyy funktiokutsun pääohjelman kautta välittämän taulukon.

Tyhjä näyttö(int n[][2] )

Sarakkeiden lukumäärä on mainittava. Vertailun vuoksi se ei ole välttämätöntä rivien tapauksessa. Siksi olemme jättäneet rivin sulkeet tyhjäksi, kun käytämme silmukkaa tulosten näyttämiseen. Mutta 2-ulotteisen taulukon tapauksessa käytämme sisäkkäistä silmukkaa. Se sisältää kaksi lausetta, joissa on 2 muuttujaa.

Voimme tarkastella tulosta käyttämällä samaa kääntäjää. Näet tulokset, että jokainen arvo näytetään erikseen rivin ja sarakkeen numeron kanssa.

Esimerkki 3

Tämä esimerkki eroaa hieman edellisistä. Tässä esimerkissä mainitsemme taulukon koon funktiokutsun parametrissa. Ja funktioilmoituksessa on myös muuttuja, joka hyväksyy taulukon koon.

Pääohjelmasta alkaen matriisi alustetaan arvoilla.

keskim. = getAverage(saldo,5);

Tulos tallennetaan avg -muuttujaan. Pelkän taulukon nimen välittämisen sijaan taulukon koko lisätään myös parametriin.

Parametri sisältää myös matriisityyppisen muuttujan ja kokonaisluvun tietotyypin matriisin koon vastaanottamiseksi. Pääohjelman tyyppi on int, koska se saa funktiolta kokonaislukuarvon. Muussa tapauksessa se on mitätön muissa tapauksissa.

Nyt näemme tuotoksen. Tämä arvo näkyy kuvassa, joka saadaan toiminnosta.

Esimerkki 4

Tämä esimerkki liittyy taulukon enimmäismäärän määrittämiseen itse asiassa kahdesta taulukosta. Tässä alustamme kaksi taulukkoa pääohjelmassa. Molemmat matriisit välitetään toiminnolle erikseen erillisissä funktiokutsuissa

printMax(arr1);

printMax(arr2);

jossa printMax on funktion nimi ja arr on taulukko. Tulos ei palaa toiminnosta ja se näkyy siellä. Silmukka laskee molempien matriisien enimmäismäärän. If-lausetta käytetään for-silmukan sisällä. Toiminnon otsikko on:

mitätön printMax(perille[5])

Koska molemmat taulukot sisältävät erilaisia ​​arvoja, molemmat tulokset ovat erilaisia.

Esimerkki 5

Tämä esimerkki on yhteenveto kaikentyyppisistä matriiseista, jotka kulkevat parametrien läpi. Nämä voivat olla kooltaan, kokoluokkaa tai osoitinjärjestelmiä. Tarkastelemme niitä yksi kerrallaan.

Pääohjelmassa jokainen toiminto ilmoitetaan ensin. Voit huomauttaa erosta heidän ilmoituksessaan.

Sisäinen summa 1(int tmp[5]);

Sis. Summa 2(int tmp[]);

Sis. Summa 3(int*tmp);

Nämä kolme taulukkoa kuvaavat, että matriisit voidaan siirtää, joilla on nämä parametrit funktiossa.

Toiminnon alustuksen jälkeen meillä on pääohjelma, jossa taulukko ilmoitetaan. Toisin kuin edellinen esimerkki, yksi taulukko alustetaan kahden sijasta, mutta se välitetään kolmella eri tavalla. Nyt näemme täällä tehdyt toimintokutsut.

Yhteensä = summa 1(myynti);

Yhteensä = summa2(myynti);

Yhteensä = sume3(myynti);

Lähtö näkyy päätoiminnossa, joten muuttuja ilmoitetaan hyväksymään funktion palauttama arvo. Kaikista kolmesta toimintokutsusta näet, että tässä parametrit ovat samat. Jokainen taulukko sisältää vain taulukon nimen. Mutta taulukon hyväksyvän funktion parametrit ovat erilaisia.

Kaikkien kolmen funktion sisäosa on sama, koska kaikkien numeroiden summa lasketaan For -silmukan käytöstä. Menetelmä ja taulukon arvot ovat samat; vain toimintojen parametrien välillä on syrjintää. Näin ollen on osoitettu, että voimme joko käyttää erilaisia ​​menetelmiä hyväksyäksesi taulukon tai suorittaa saman toiminnallisuuden, ja vastaus on sama. Voimme vahvistaa sen tarkistamalla lähdön. Saman kokoamismenettelyn avulla saamme alla olevassa kuvassa esitetyn tuloksen.

Näet, että vastaus on sama kaikissa kolmessa käytössä olevassa toiminnossa.

Johtopäätös

Tässä artikkelissa käyttäjä oppii tuntemaan taulukon välitysmenetelmän parametreissa. Joukkoja voidaan käsitellä monissa tapauksissa arvon palauttamisen tai argumenttien välittämisen yhteydessä.