Vrátiť pole z funkcie C ++

Return Array From Function C



Polia sú konkrétne kontajnery, ktoré majú hodnoty rovnakého dátového typu. Funkcie v C ++ vykonávajú operácie s poliami a tieto polia sa potom vrátia do hlavnej funkcie. Existuje mnoho prístupov k popisu tohto javu. V tejto príručke sú vysvetlené niektoré bežné metódy:

Na vrátenie statického poľa použite ukazovatele

Keď použijeme normálne pole, existuje pravdepodobnosť, že dosiahneme nejaký abnormálny výsledok. Aby sme tomu zabránili, v našom kóde C ++ používame statické pole. Poďme porozumieť príkladu, ktorý sme použili. V tejto funkcii sme deklarovali pole s 5 hodnotami ako návratový typ, ako je tu uvedené.







Int *funkcia ()



Pretože hodnota bude celočíselného typu, bude v príklade nižšie označená ako int. Pretože sme funkciu uviedli ako ukazovateľ, funkcia bude typu ukazovateľa. Po zadaní hodnôt sa pole vráti do hlavného programu.







V hlavnom programe sme uskutočnili volanie funkcie. Na prijatie hodnoty vrátenej z funkcie použijeme celočíselnú premennú. Keď je pole vrátené, môžeme ľahko získať prístup k jeho hodnotám. Hodnoty sa vytlačia ručne.

Int*ukazovateľ=funkciu();

Účelom ukazovateľa je nájsť položku, ktorá sa nachádza na indexe jedného z poľa. Inými slovami, zobrazuje adresu hodnoty v poli. Potom použijeme prototyp funkcie, ktorý vráti ukazovateľ.



Aby sme videli výstup poľa vrátený prostredníctvom funkcie, musíme mať v prípade Linuxu prístup k terminálu Ubuntu. Je to spôsobené tým, že výstup je prístupný prostredníctvom terminálu Linux. V systéme Linux potrebujeme kompilátor na spustenie kódov C ++ napísaných v ľubovoľnom textovom editore. Táto kompilácia sa vykonáva v jazyku G ++. -O sa používa na uloženie výstupu do súboru. Tu potrebujeme výstupný súbor a súbor zdrojového kódu. Po kompilácii spustíme kód:

$g ++ -alebosúbor1 súbor1.c
$./súbor1

Z výstupu vidíme, že pole, ktoré bolo inicializované vo funkcii, sa zobrazuje v hlavnej funkcii pomocou statického poľa, ktoré bolo inicializované ručne a pomocou ukazovateľov.

Vráťte dynamicky pridelené pole pomocou ukazovateľov

Polia je možné vrátiť pomocou dynamického priradenia. Polia je možné dynamicky prideľovať pomocou slova nové. Zostanú tam, kým ich sami neodstránime. Statické polia majú pevnú veľkosť, čo znamená, že počas inicializácie musíte zadať veľkosť. Keď je pole vytvorené, je ťažké zväčšiť veľkosť v čase spustenia alebo neskôr. Ale v prípade dynamického poľa môžeme pridať ďalšie položky, kedykoľvek chceme, pretože sa rozširuje, keď do neho zadávame hodnoty. Nemusíme teda špecifikovať ani identifikovať žiadnu veľkosť.

Posúvame sa k príkladu, ktorý sme tu použili. S ukazovateľmi sme použili dynamické pole ako v predchádzajúcich príkladoch, kde sme použili ukazovatele so statickými poľami.

Int*funkciu()

Po deklarácii funkcie sú polia deklarované dynamicky:

Int*pole= Nový int [100];

Termín nový sa neustále používa na vytváranie dynamického poľa. Na poli budeme vykonávať operácie tak, že do neho zadáme hodnoty. Potom sa pole vráti do hlavného programu:

Teraz zvážte hlavnú funkciu. Zavolali sme funkciu. Keď sa pole vráti, pridáme premennú celočíselného typu ukazovateľa, aby sme hodnotu prijali.

Int*ukazovateľ=funkciu();

Hodnoty uložené v poli sa vytlačia ručne. Výstup je získaný metódou kompilácie a vykonávania.

Vráťte pole pomocou štruktúr

Štruktúry sú kontajnery ako polia. Pole však obsahuje hodnotu rovnakého dátového typu súčasne. A v prípade štruktúr obsahujú viac ako jednu hodnotu dátového typu. Prevzali sme štruktúru s názvom sample. Tu je deklarácia poľa vo vnútri štruktúr namiesto funkcií. Návratový typ je názov štruktúry. Premenná štruktúry sa vráti do hlavného programu. Štruktúra používa na deklaráciu slovo struct.

Štruktúra vzorky
{
Int arr[100];
};

Po deklarácii štruktúry sme použili funkciu, v ktorej je vytvorený objekt štruktúry. Tento objekt bude použitý na prístup do štruktúry. Táto funkcia vráti objekt štruktúry do hlavnej funkcie, aby sme cez tento objekt mohli tlačiť pole. Premenná získa hodnoty v premennej. Táto hodnota je celé číslo, do ktorého budeme zadávať hodnoty do poľa. Rovnako ako v tomto prípade sme ako číslo vybrali 6. Do poľa teda budú zadané čísla až 6.

Štruktúra funkcie vzorky(intn)

Teraz, smerom k hlavnému programu, sme vytvorili objekt na prístup k poľu prostredníctvom tohto:

Štruktúra vzorky x;

Po inicializácii objektu sa do premennej pridá hodnota, do ktorej chceme, aby boli čísla zadávané do poľa. Pri volaní funkcie odovzdáme hodnotu v parametri:

X=funkciu(n);

Displej budeme mať pomocou slučky for. Hodnoty sa zobrazujú prostredníctvom objektu deklarovaného na začiatku hlavného programu:

Výstup naznačuje, že vo výsledku je zobrazených 6 hodnôt, pretože sme do programu zadali 6 čísel.

Vrátiť pole pomocou štandardného súboru

C ++ používa mnoho metód na vrátenie poľa z funkcie. Jeden z nich je cez std :: array. Je to šablóna štruktúry. Táto funkcia tiež poskytuje ďalšie dve funkcie, ktoré sú size () a empty (). Vráti sa názov poľa, ktorý naznačuje, že sa celé pole vráti do hlavného programu. Tu pridáme pole hlavičkového súboru. Okrem knižnice obsahuje všetky funkcie poľa.

#zahrnúť

pole<int,10>funkciu()

Pretože môžeme vrátiť celé pole s jeho názvom, tak v deklarácii funkcie použijeme pole ako návratový typ. Údaje sa zadávajú do poľa. Potom sa pole vráti do hlavného programu. Pri prechode k hlavnej funkcii premenná poľa prijme pole pri volaní funkcie.

arr=funkciu();

Na zobrazenie hodnôt poľa sa opäť použije slučka for. Sledujeme výstup z obrázku zobrazeného nižšie. Pretože sme použili 10 veľkostí, bude zadaných 0 čísel. Preto sa zobrazujú tieto:

Vráťte pole cez vektorový kontajner

Tento prístup je dynamicky alokované pole. Rovnako ako v tomto prípade nie je potrebné zadávať veľkosť poľa. Tu nepotrebujeme žiadny parameter veľkosti. V tomto prípade musíme do knižnice pridať hlavičku vektora, ktorá obsahuje funkcie vektora.

Pohyb smerom k funkcii, kde návratový typ je tiež int vektor a obsahuje tiež vektorový ukazovateľ ako argument v parametri. Tu je predstavené pole s názvom temp:

Vektor<int>MultiplyArrayByTwo(konštvektor<int> *arr)

Funkcia znásobí prvky poľa dvoma pomocou funkcie tmp.push_back (). Potom vráťte súbor tmp. Premenná automatického typu bude akceptovať hodnoty poľa z funkcie. Pole obsahuje položky v ňom.

Výstup ukazuje fungovanie vektorového kontajnera.

Záver

V uvedenom článku sme popísali päť najčastejšie používaných metód na vysvetlenie funkčnosti vrátenia poľa z funkcie.