Grąžinti masyvą iš funkcijos C ++

Return Array From Function C



Masyvai yra tam tikri sudėtiniai rodiniai, kurių vertės yra to paties tipo. Funkcijos C ++ atlieka masyvų operacijas, o šios masyvai grąžinami į pagrindinę funkciją. Yra daug būdų apibūdinti šį reiškinį. Šiame vadove paaiškinami keli įprasti metodai:

Naudokite rodykles statiniam masyvui grąžinti

Kai mes naudojame įprastą masyvą, yra tikimybė gauti tam tikrų nenormalių rezultatų. Norėdami to išvengti, savo C ++ kode naudojame statinį masyvą. Supraskime pavyzdį, kurį naudojome. Šioje funkcijoje mes paskelbėme 5 reikšmių masyvą kaip grąžinimo tipą, kaip minėta čia.







Int *funkcija ()



Kadangi reikšmė bus sveiko skaičiaus tipas, todėl toliau pateiktame pavyzdyje ji pažymėta kaip int. Kadangi mes pristatėme funkciją kaip rodyklę, funkcija bus rodyklės tipas. Įvedus reikšmes, masyvas grąžinamas į pagrindinę programą.







Pagrindinėje programoje mes iškvietėme funkciją. Norėdami priimti iš funkcijos grąžintą vertę, naudosime sveiką skaičių kintamąjį. Kai masyvas grąžinamas, galime lengvai pasiekti jo vertes. Reikšmės bus spausdinamos rankiniu būdu.

Int*rodyklė=funkcija();

Rodyklės tikslas yra surasti elementą, esantį masyvo 1 indekse. Kitaip tariant, jis rodo masyvo vertės adresą. Tada mes naudojame funkcijos prototipą, kuris grąžins žymeklį.



Norėdami pamatyti masyvo išvestį, grąžintą naudojant funkciją, „Linux“ atveju turime turėti prieigą prie „Ubuntu“ terminalo. Taip yra dėl to, kad išvestis yra prieinama per „Linux“ terminalą. „Linux“ sistemoje mums reikia kompiliatoriaus, kad paleistume C ++ kodus, parašytus bet kuriame teksto redaktoriuje. Ši kompiliacija atliekama naudojant G ++. -O naudojamas išvesties saugojimui faile. Čia mums reikia išvesties failo ir šaltinio kodo failo. Po kompiliavimo vykdysime kodą:

$g ++ -arbafailas1 failas1.c
$./failas1

Iš išvesties matome, kad masyvas, kuris buvo inicijuotas funkcijoje, rodomas pagrindinėje funkcijoje naudojant statinį masyvą, inicijuotą rankiniu būdu ir per rodykles.

Grąžinkite dinamiškai paskirstytą masyvą naudodami rodykles

Masyvus galima grąžinti naudojant dinaminį paskirstymą. Masyvus galima dinamiškai priskirti naudojant žodį naujas. Jie liks ten, kol patys jų neištrinsime. Statiniai masyvai yra fiksuoto dydžio, o tai reiškia, kad inicijavimo metu turite nurodyti dydį. Sukūrus masyvą, sunku padidinti dydį vykdymo metu arba vėliau. Tačiau dinaminio masyvo atveju mes galime pridėti daugiau elementų, kai tik norime, nes jis plečiasi, kai įvedame jame reikšmes. Taigi mums nereikia nurodyti ar nustatyti jokio dydžio.

Pereiname prie pavyzdžio, kurį čia panaudojome. Mes naudojome dinaminį masyvą su rodyklėmis, kaip ir ankstesniuose pavyzdžiuose, kur naudojome rodykles su statiniais masyvais.

Int*funkcija()

Po funkcijos deklaravimo masyvai deklaruojami dinamiškai:

Int*masyvas= naujas tarpt [100];

Terminas „naujas“ nuolat naudojamas dinamiškam masyvui sukurti. Mes atliksime operacijas masyve įvesdami į jį reikšmes. Po to masyvas grąžinamas į pagrindinę programą:

Dabar apsvarstykite pagrindinę funkciją. Mes iškvietėme funkciją. Kai masyvas grąžinamas, pridedame rodyklės sveikojo tipo kintamąjį, kad priimtume vertę.

Int*rodyklė=funkcija();

Masyve išsaugotos vertės spausdinamos rankiniu būdu. Rezultatas gaunamas kompiliavimo ir vykdymo metodu.

Grįžimo masyvas naudojant struktūras

Konstrukcijos yra konteineriai, kaip masyvai. Tačiau masyve yra to paties duomenų tipo vertė vienu metu. O struktūrų atveju jose yra daugiau nei viena duomenų tipo reikšmė. Mes paėmėme struktūrą, pavadintą pavyzdžiu. Čia masyvo deklaracija yra struktūrų viduje, o ne funkcijose. Grąžinimo tipas yra struktūros pavadinimas. Struktūros kintamasis grąžinamas į pagrindinę programą. Struktūra deklaravimui naudoja žodį struktūrą.

Struktūrinis pavyzdys
{
Intr[100];
};

Po struktūros deklaravimo panaudojome funkciją, kurios metu sukuriamas struktūros objektas. Šis objektas bus naudojamas norint pasiekti struktūrą. Ši funkcija grąžins struktūros objektą į pagrindinę funkciją, kad galėtume spausdinti masyvą per šį objektą. Kintamasis gaus kintamojo reikšmes. Ši vertė yra sveikasis skaičius, iki kurio mes įvesime reikšmes į masyvą. Kaip ir šiame pavyzdyje, mes pasirinkome 6 kaip skaičių. Taigi masyvo numeriai bus įvesti iki 6.

Struktūrinio pavyzdžio funkcija(tarptn)

Dabar, pereidami prie pagrindinės programos, sukūrėme objektą, kad galėtumėte pasiekti masyvą per šią:

Struktūrinis pavyzdys x;

Po objekto inicijavimo prie kintamojo pridedama vertė, iki kurios norime, kad skaičiai būtų įvesti į masyvą. Funkcijos iškvietime perduosime parametro reikšmę:

X=funkcija(n);

Mes turėsime ekraną naudodami for ciklą. Vertės rodomos per objektą, paskelbtą pagrindinės programos pradžioje:

Išvestis rodo, kad rezultate rodomos 6 vertės, nes į programą įvedėme 6 skaičius.

Grąžinimo masyvas naudojant standartinę

C ++ naudoja daugybę metodų, kaip grąžinti masyvą iš funkcijos. Vienas iš jų yra per std :: array. Tai struktūros šablonas. Ši funkcija taip pat suteikia dar dvi funkcijas, kurios yra dydis () ir tuščias (). Pateikiamas masyvo pavadinimas, nurodantis, kad visas masyvas grąžinamas į pagrindinę programą. Čia pridėsime antraštės failų masyvą. Be bibliotekos, jame yra visos masyvo funkcijos.

#įtraukti

masyvas<tarpt,10>funkcija()

Kadangi galime grąžinti visą masyvą su jo pavadinimu, todėl funkcijos deklaracijoje mes naudosime masyvą kaip grąžinimo tipą. Duomenys įvedami į masyvą. Po to masyvas bus grąžintas į pagrindinę programą. Pereinant prie pagrindinės funkcijos, masyvo kintamasis priims masyvą, kai funkcija bus iškviesta.

arr=funkcija();

Vėlgi, kilpa bus naudojama masyvo vertėms rodyti. Mes stebime žemiau pateikto vaizdo išvestį. Kadangi naudojome 10 dydžių, bus įvesti 0 skaičių. Taigi, jie rodomi:

Grąžinkite masyvą per vektorinį konteinerį

Šis metodas yra dinamiškai paskirstytas masyvas. Kaip ir šiuo atveju, nereikia nurodyti masyvo dydžio. Čia mums nereikia jokio dydžio parametro. Naudodami šį pavyzdį, bibliotekoje turime pridėti vektoriaus antraštę, kurioje yra vektoriaus funkcijos.

Judėjimas link funkcijos, kur grąžinimo tipas taip pat yra int vektorius ir parametro argumente taip pat yra vektoriaus žymeklis. Čia pateikiamas masyvas su pavadinimu temp:

Vektorius<tarpt>„MultiplyArrayByTwo“(konstvektorius<tarpt> *arr)

Funkcija masyvo elementus padaugins iš dviejų, naudodami funkciją tmp.push_back (). Tada grąžinkite tmp. Automatinio tipo kintamasis priims masyvo reikšmes iš funkcijos. Masyve yra jame esančių elementų.

Išvestis rodo vektorinio konteinerio darbą.

Išvada

Minėtame straipsnyje aprašėme penkis dažniausiai naudojamus metodus, paaiškinančius masyvo grąžinimo iš funkcijos funkcionalumą.