Massiivi tagastamine funktsioonist C ++

Return Array From Function C



Massiivid on konkreetsed konteinerid, millel on sama andmetüübi väärtused. C ++ funktsioonid täidavad massiividega toiminguid ja need massiivid tagastatakse seejärel põhifunktsioonile. Selle nähtuse kirjeldamiseks on palju lähenemisviise. Selles juhendis selgitatakse mõnda levinumat meetodit:

Kasutage staatilise massiivi tagastamiseks näpunäiteid

Kui kasutame tavalist massiivi, on tõenäosus saada mingisuguseid ebanormaalseid tulemusi. Selle vältimiseks kasutame oma C ++ koodis staatilist massiivi. Mõistame näidet, mida oleme kasutanud. Selle funktsiooni puhul oleme deklareerinud 5 väärtusega massiivi tagastustüübiks, nagu siin mainitud.







Int *funktsioon ()



Kuna väärtus on täisarv, lisatakse see allolevas näites int. Kuna oleme funktsiooni kasutusele võtnud osutusena, on funktsioon osutitüüp. Pärast väärtuste sisestamist tagastatakse massiiv põhiprogrammi.







Põhiprogrammis oleme teinud funktsioonikõne. Funktsioonilt tagastatava väärtuse aktsepteerimiseks kasutame täisarvulist muutujat. Kui massiiv tagastatakse, saame selle väärtustele hõlpsalt juurde pääseda. Väärtused prinditakse käsitsi.

Int*osuti=funktsiooni();

Kursori eesmärk on leida üksus, mis asub massiivi esimeses indeksis. Teisisõnu, see näitab massiivi väärtuse aadressi. Seejärel kasutame funktsiooni prototüüpi, mis tagastab kursori.



Funktsiooni kaudu tagastatud massiivi väljundi nägemiseks peab meil Linuxi puhul olema juurdepääs Ubuntu terminalile. Selle põhjuseks on väljundi ligipääs Linuxi terminali kaudu. Linuxis vajame kompilaatorit mis tahes tekstiredaktorisse kirjutatud C ++ koodide käitamiseks. See kompileerimine toimub G ++ kaudu. -O kasutatakse väljundi salvestamiseks faili. Siin vajame väljundfaili ja lähtekoodi faili. Pärast kompileerimist käivitame koodi:

$g ++ -võifail1 fail1.c
$./fail1

Väljundist näeme, et funktsioonis initsialiseeritud massiiv kuvatakse põhifunktsioonis, kasutades staatilist massiivi, mis on initsialiseeritud käsitsi ja kursorite kaudu.

Taastage dünaamiliselt eraldatud massiiv osuti abil

Massiive saab tagastada dünaamilise jaotamise abil. Massiive saab dünaamiliselt eraldada, kasutades sõna uus. Nad jäävad sinna seni, kuni me need ise kustutame. Staatilised massiivid on fikseeritud suurusega, mis tähendab, et peate lähtestamise ajal sisestama suuruse. Kui massiiv on loodud, on selle suurust käitamisajal või edaspidi raske suurendada. Kuid dünaamilise massiivi puhul saame igal ajal lisada rohkem üksusi, kuna see laieneb, kui sisestame sellesse väärtusi. Seega ei pea me ühtegi suurust täpsustama ega tuvastama.

Liikudes eeskuju poole, mida oleme siin kasutanud. Oleme näidikutega kasutanud dünaamilist massiivi, nagu eelmistes näidetes, kus oleme kasutanud staatiliste massiividega näpunäiteid.

Int*funktsiooni()

Pärast funktsiooni deklareerimist deklareeritakse massiivid dünaamiliselt:

Int*massiiv= uus int [100];

Mõistet uus kasutatakse pidevalt dünaamilise massiivi loomiseks. Teostame massiiviga toiminguid, sisestades sinna väärtused. Pärast seda tagastatakse massiiv põhiprogrammi:

Nüüd kaaluge põhifunktsiooni. Funktsioonikõne tegime. Massiivi tagastamisel lisame väärtuse aktsepteerimiseks kursori täisarvu tüüpi muutuja.

Int*osuti=funktsiooni();

Massiivi salvestatud väärtused prinditakse käsitsi. Väljund saadakse koostamis- ja täitmismeetodi abil.

Tagastusmass struktuuride abil

Konstruktsioonid on konteinerid nagu massiivid. Kuid massiiv sisaldab sama andmetüübi väärtust korraga. Ja struktuuride puhul sisaldavad need rohkem kui ühte andmetüübi väärtust. Oleme võtnud struktuuri nimega proov. Siin on massiivi deklaratsioon funktsioonide asemel struktuuride sees. Tagastustüüp on struktuuri nimi. Struktuurimuutuja tagastatakse põhiprogrammile. Struktuur kasutab deklareerimiseks sõna struktuuri.

Struktuuri näidis
{
Rahvusvaheline saab[100];
};

Pärast struktuuri deklareerimist oleme kasutanud funktsiooni, milles luuakse struktuuri objekt. Seda objekti kasutatakse struktuurile juurdepääsuks. See funktsioon tagastab struktuuri objekti põhifunktsioonile, et saaksime massiivi selle objekti kaudu printida. Muutuja saab muutuja väärtused. See väärtus on täisarv, milleni sisestame massiivi väärtused. Nagu selles näites, oleme arvuks valinud 6. Niisiis sisestatakse massiivi numbrid kuni 6.

Struktuuri näidisfunktsioon(intn)

Nüüd, põhiprogrammi poole liikudes, oleme loonud objekti massiivile juurdepääsemiseks selle kaudu:

Struktuuri näidis x;

Pärast objekti initsialiseerimist lisatakse muutujale väärtus, milleni me soovime massiivi numbrid sisestada. Funktsioonikutses edastame parameetri väärtuse:

X=funktsiooni(n);

Meil on ekraan, kasutades for loop. Väärtused kuvatakse põhiprogrammi alguses deklareeritud objekti kaudu:

Väljund näitab, et tulemuses kuvatakse 6 väärtust, kuna oleme programmi sisestanud 6 numbrit.

Tagasi massiivi abil Std

C ++ kasutab funktsioonist massiivi tagastamiseks palju meetodeid. Üks neist on läbi std :: array. See on struktuuri mall. See funktsioon pakub veel kahte funktsiooni, mis on suurus () ja tühi (). Tagastatakse massiivi nimi, mis näitab, et kogu massiiv tagastatakse põhiprogrammile. Siin lisame päisefailide massiivi. Lisaks raamatukogule sisaldab see kõiki massiivi funktsioone.

#kaasake

massiiv<int,10>funktsiooni()

Kuna me võime tagastada kogu massiivi koos selle nimega, kasutame funktsiooni deklaratsioonis massiivi tagastustüübina. Andmed sisestatakse massiivi. Pärast seda tagastatakse massiiv põhiprogrammi. Põhifunktsiooni poole liikudes võtab massiivi muutuja massiivi vastu funktsiooni kutsumisel.

arr=funktsiooni();

Jällegi kasutatakse silmuse jaoks massiivi väärtuste kuvamiseks. Jälgime allpool kuvatud pildi väljundit. Kuna oleme kasutanud 10 suurust, sisestatakse 0 numbrit. Seetõttu kuvatakse need:

Tagasisaatmine läbi vektorkonteineri

See lähenemine on dünaamiliselt eraldatud massiiv. Nagu käesoleval juhul, pole massiivi suurust vaja täpsustada. Me ei vaja siin suuruse parameetreid. Selle näite abil peame teeki lisama vektori päise, mis sisaldab vektori funktsioone.

Funktsiooni poole liikumine, kus tagastustüüp on samuti intvektor ja sisaldab parameetris ka argumendina vektori kursorit. Siin tutvustatakse massiivi nimega temp:

Vektor<int>MultiplyArrayByTwo(constvektor<int> *arr)

Funktsioon korrutab massiivi elemendid kahega, kasutades funktsiooni tmp.push_back (). Seejärel tagastage tmp. Automaatse tüübi muutuja aktsepteerib funktsioonist massiivi väärtusi. Massiiv sisaldab selles sisalduvaid üksusi.

Väljund näitab vektorkonteineri tööd.

Järeldus

Ülalnimetatud artiklis oleme kirjeldanud viit kõige sagedamini kasutatavat meetodit massiivi funktsioonilt tagastamise funktsionaalsuse selgitamiseks.