Masyvo perdavimas funkcijai C ++

Passing An Array Function C



Masyvas yra to paties tipo duomenų elementų grupė. Daugelis funkcijų yra atliekamos masyvuose arba pagrindinėje programoje, arba už jos ribų, funkcijose. Kalbant apie C ++, funkcijų atveju turime jas perduoti. Tai daroma naudojant parametrus kaip argumentus. Šie argumentai gali būti įvairūs, tiek masyvūs masyvai, tiek rodyklių masyvas. Šioje pamokoje aptarsime keletą pagrindinių masyvo perdavimo aspektų, naudojant skirtingus funkcijų parametrus.

Sintaksė

[Grįžtitipo] [vardasfunkcija] (duomenistipomasyvo pavadinimas[masyvasdydžio])

{

funkcijakūnas

}

1 pavyzdys

Apsvarstykite pavyzdį, kuriame turime spausdinti C ++ programos studentų pažymius. Šis spaudinys bus naudojamas kaip atskira funkcija, o ne pagrindinė programa. Priešingai, mes imsimės įvesties į pagrindinę programą ir šias reikšmes perkelsime į funkciją kaip parametrą. Apsvarstykite funkciją. Jo parametre yra masyvo duomenų tipo kintamasis, kuris priims masyvo reikšmes. Čia pateikiamas visas masyvas. Ženklai bus rodomi naudojant kilpą. Kaip ir masyvuose, mums reikia kilpų, kad galėtume iš jų atspausdinti.









Pereidami prie pagrindinės funkcijos, mes deklaruojame masyvą su jo dydžiu ir vertėmis. Kaip mes turime vadinti funkciją. Taigi metodas yra tai, kad parametro kaip argumento funkcijų pavadinimą įrašome su masyvo pavadinimu. Mes neapibrėžėme masyvo dydžio.



Ekranas(ženklų);

Parametro argumentas reiškia masyvo atminties adresą. Funkcijos antraštės parametre int m [7] paverčiamas int *m. Tai apima tą patį adresą kaip ir pradinis masyvas. Kai funkcijos pagrinde naudojame m [5], mes ketiname manipuliuoti pradiniu masyvu.





Tuščias ekranas(int m[7] )

„Linux“ operacinėje sistemoje norint gauti išvestį per terminalą reikia įdiegti tam tikras išankstines sąlygas. Jam reikia kompiliatoriaus, kuris surenka ir įvykdo kodą komandų eilutės terminale. G ++ yra naudojamas C ++ kompiliavimui.



$g ++ -arbakodas3 kodas3.c

$./kodas 3

Kur –o naudojamas išvesties išsaugojimui iš šaltinio failo į išvesties failą.

Iš išvesties galite pastebėti, kad visi pagrindinės funkcijos masyve inicijuoti skaičiai perduodami ir rodomi per ekrano funkciją.

2 pavyzdys

Kitas pavyzdys, susijęs su masyvu, einančiu per parametrą, yra daugialypio masyvo perdavimas funkcijai. Čia naudojamas dvimatis masyvas (2d). Pagrindinėje funkcijoje turime inicijuoti masyvą.

Int masyvas[eilė][stulpelis]

2d masyvo inicijavimas apima eilutę ir stulpelį. Ir jų tvarka turi būti išlaikyta visos programos metu. 2d masyvas inicijuojamas su dviem skaičiais skliausteliuose. Kaip aprašėme 2 stulpelius inicializuojant.

Ekranas(ant vieno);

Masyvo pavadinimą parametre naudosime tik kaip argumentą.

Dabar apžvelgsime ekrano funkcijos veikimą. Kai funkcija paleidžiama, reikia masyvo kintamojo, kad būtų priimtas masyvas, perduotas per pagrindinę programą.

Tuščias ekranas(int n[][2] )

Privaloma paminėti stulpelių skaičių. Palyginimui, tai nėra būtina eilučių atveju. Štai kodėl mes palikome tuščius eilučių skliaustus, kai rezultatus rodome cikle. Tačiau 2 matmenų masyvo atveju mes naudojame įdėtą kilpą. Jame yra du teiginiai, kuriuose yra 2 kintamieji.

Išvestį galime peržiūrėti naudodami tą patį kompiliatorių. Galite matyti rezultatus, kad kiekviena vertė rodoma atskirai su eilute ir stulpelio numeriu.

3 pavyzdys

Šis pavyzdys šiek tiek skiriasi nuo ankstesnių. Šiame pavyzdyje funkcijos iškvietimo parametre minime masyvo dydį. Funkcijų deklaracijoje taip pat įvestas kintamasis, kad būtų galima priimti masyvo dydį.

Pradedant nuo pagrindinės programos, inicijuojamas masyvas su reikšmėmis.

vid. = getAverage(pusiausvyra,5);

Rezultatas bus išsaugotas kintamajame „avg“. Užuot perdavęs tik masyvo pavadinimą, masyvo dydis taip pat pridedamas prie parametro.

Parametre taip pat yra masyvo tipo kintamasis ir sveikasis duomenų tipas masyvo dydžiui gauti. Pagrindinės programos tipas yra int, nes ji gaus sveiką skaičių iš funkcijos. Priešingu atveju jis negalioja kitais atvejais.

Dabar pamatysime išvestį. Ši vertė matoma per vaizdą, gautą naudojant funkciją.

4 pavyzdys

Šis pavyzdys susijęs su didžiausio masyvo skaičiaus nustatymu iš dviejų masyvų. Čia mes inicijuojame du masyvus pagrindinėje programoje. Abu masyvai atskirai perduodami funkcijai atskirų funkcijų iškvietimų metu

printMax(arr1);

printMax(arr2);

kur printMax yra funkcijos pavadinimas, o arr yra masyvas. Rezultatas negrįš iš funkcijos ir bus rodomas ten. Ciklas apskaičiuos maksimalų abiejų masyvų skaičių. Jei sakinys naudojamas ciklo for for viduje. Funkcijos antraštė yra tokia:

void printMax(int[5])

Kadangi abiejuose masyvuose yra skirtingos vertės, abu rezultatai bus skirtingi.

5 pavyzdys

Šis pavyzdys yra visų tipų masyvų, einančių per parametrus, santrauka. Tai gali būti dydžio, dydžio arba žymeklio masyvai. Mes juos svarstysime po vieną.

Pagrindinėje programoje kiekviena funkcija deklaruojama pirmiausia. Jų deklaracijoje galite nurodyti skirtumą.

1 suma(int tmp[5]);

Tarpinė suma2(int tmp[]);

Tarp suma 3(tarpt*tmp);

Šios trys masyvai rodo, kad masyvai gali būti perduodami, turintys šiuos parametrus.

Po funkcijos inicijavimo turime pagrindinę programą, kurioje deklaruojamas masyvas. Skirtingai nuo ankstesnio pavyzdžio, inicijuojamas vienas masyvas, o ne du, tačiau jis perduodamas trimis skirtingais būdais. Dabar pamatysime čia atliktus funkcijų skambučius.

Iš viso = suma1(pardavimai);

Iš viso = suma2(pardavimai);

Iš viso = sume3(pardavimai);

Išvestis rodoma pagrindinėje funkcijoje, todėl deklaruojamas kintamasis, kuris priima funkcijos grąžintą vertę. Iš visų trijų funkcijų iškvietimų matote, kad čia parametrai yra vienodi. Kiekviename masyve yra tik masyvo pavadinimas. Tačiau funkcijos, kuri priima masyvą, parametrai yra skirtingi.

Visų trijų funkcijų vidinis korpusas yra tas pats, nes visų skaičių suma apskaičiuojama naudojant For ciklo naudojimą. Metodika ir masyvo vertės yra tos pačios; tik yra diskriminacija tarp funkcijų parametrų. Taigi įrodyta, kad masyvui priimti galime naudoti skirtingus metodus arba atlikti tą pačią funkciją, o atsakymas yra tas pats. Tai galime patvirtinti patikrinę išvestį. Naudodami tą pačią kompiliavimo procedūrą, gausime išvestį, parodytą žemiau esančiame paveikslėlyje.

Matote, kad visų trijų naudojamų funkcijų atsakymas yra tas pats.

Išvada

Šiame straipsnyje vartotojas sužinos apie masyvo perdavimo metodą pagal parametrus. Masyvus galima tvarkyti daugeliu atvejų, kai reikia grąžinti vertę arba perduoti ją argumentais.