Visszaadási tömb a C ++ függvényből

Return Array From Function C



A tömbök speciális tárolók, amelyek azonos adattípusú értékekkel rendelkeznek. A C ++ függvényei tömböket hajtanak végre, és ezek a tömbök visszatérnek a fő funkcióhoz. Ennek a jelenségnek a leírására sokféle megközelítés létezik. Ebben az útmutatóban néhány gyakori módszert ismertetünk:

Mutatók segítségével adja vissza a statikus tömböt

Ha normál tömböt használunk, akkor van esély arra, hogy valamilyen rendellenes eredmény születik. Ennek elkerülése érdekében statikus tömböt használunk a C ++ kódunkban. Értsük meg az általunk használt példát. Ebben a függvényben az 5 értékű tömböt az itt említett visszatérési típusnak nyilvánítottuk.







Int *függvény ()



Mivel az érték egész típusú lesz, ezért az alábbi példában int -ként van megjelölve. Mivel a funkciót mutatóként vezettük be, a függvény mutató típus lesz. Az értékek megadása után egy tömb visszakerül a főprogramba.







A fő programban funkcióhívást kezdeményeztünk. A függvényből visszaadott érték elfogadásához egész változót fogunk használni. Amikor visszaadjuk a tömböt, könnyen elérhetjük értékeit. Az értékek manuálisan lesznek kinyomtatva.

Int*mutató=funkció();

A mutató célja a tömb első indexében található elem megkeresése. Más szóval a tömbben lévő érték címét mutatja. Ezután egy függvény prototípust használunk, amely visszaadja a mutatót.



Ahhoz, hogy lássuk a tömb kimenetét a függvényen keresztül, Linux esetén hozzáférnünk kell az Ubuntu terminálhoz. Ez annak köszönhető, hogy a kimenet elérhető a Linux terminálon keresztül. Linux alatt fordítóra van szükségünk bármely szövegszerkesztőben írt C ++ kód futtatásához. Ez az összeállítás a G ++ segítségével történik. A -o a kimenet fájlban való tárolására szolgál. Itt szükségünk van a kimeneti fájlra és a forráskód fájlra. Az összeállítás után végrehajtjuk a kódot:

$g ++ -vagyfájl1 fájl1.c
$./fájl1

A kimenetből láthatjuk, hogy a függvényben inicializált tömb megjelenik a főfunkcióban egy statikus tömb használatával, manuálisan és a mutatókon keresztül inicializálva.

Dinamikusan kiosztott tömb visszaadása mutatókkal

A tömböket dinamikus elosztással lehet visszaadni. A tömbök dinamikusan kioszthatók az új szó használatával. Ott maradnak mindaddig, amíg mi magunk nem töröljük őket. A statikus tömbök rögzített méretűek, ami azt jelenti, hogy meg kell adnia a méretet az inicializálás során. A tömb létrehozása után nehéz növelni a méretet futás közben vagy később. De a dinamikus tömb esetében további elemeket adhatunk hozzá, amikor csak akarunk, mert kibővül, amint értékeket írunk be. Tehát nem kell megadnunk vagy azonosítanunk semmilyen méretet.

Az itt használt példa felé haladva. Dinamikus tömböt használtunk a mutatókkal, mint az előző példákban, ahol mutatókat használtunk a statikus tömbökkel.

Int*funkció()

A függvény deklarálása után a tömböket dinamikusan deklarálják:

Int*sor= új int [100];

Az új kifejezést folyamatosan használják dinamikus tömb létrehozására. Műveleteket hajtunk végre a tömbön az értékek megadásával. Ezt követően a tömb visszatér a fő programhoz:

Most fontolja meg a fő funkciót. Elindítottuk a függvényhívást. A tömb visszaadása után hozzáadunk egy mutató egész típusú változót az érték elfogadásához.

Int*mutató=funkció();

A tömbben tárolt értékek manuálisan kerülnek kinyomtatásra. A kimenetet fordítási és végrehajtási módszerrel nyerik.

Visszatérő tömb a struktúrák használatával

A szerkezetek olyan tárolók, mint a tömbök. De a tömb egyszerre ugyanazon adattípus értékét tartalmazza. A struktúrák esetében pedig több adattípus értéket is tartalmaznak. Vettünk egy minta nevű szerkezetet. Itt a tömb deklaráció a struktúrákon belül van a függvények helyett. A visszatérési típus a szerkezet neve. A strukturális változó visszatér a főprogramhoz. A szerkezet a szerkezet szót használja a deklarációhoz.

Struktúra minta
{
Int arr[100];
};

A szerkezet deklarálása után olyan függvényt használtunk, amelyben egy struktúra objektum jön létre. Ezt az objektumot fogják használni a szerkezet eléréséhez. Ez a függvény visszaadja a struktúra objektumot a fő funkciónak, hogy ki tudjuk nyomtatni a tömböt ezen az objektumon keresztül. Egy változó megkapja a változó értékeit. Ez az érték az egész szám, amelyig beírjuk az értékeket a tömbbe. Ahogy ebben a példában is, 6 -ot választottunk számnak. Tehát a számokat legfeljebb 6 -ig kell beírni a tömbbe.

Struktúra minta funkció(intn)

Most, a fő program felé haladva létrehoztunk egy objektumot a tömb eléréséhez ezen keresztül:

Struktúra minta x;

Az objektum inicializálása után egy érték kerül hozzáadásra ahhoz a változóhoz, amelyhez a számokat be akarjuk írni a tömbbe. Funkcióhíváskor átadjuk a paraméter értékét:

x=funkció(n);

A for ciklussal rendelkezünk a kijelzővel. Az értékek a főprogram elején deklarált objektumon keresztül jelennek meg:

A kimenet azt jelzi, hogy 6 érték jelenik meg az eredményben, mivel 6 számot írtunk be a programba.

Visszaadási tömb a Std használatával

A C ++ számos módszert használ arra, hogy tömböt adjon vissza a függvényből. Az egyik az std :: array. Ez egy szerkezetsablon. Ez a szolgáltatás további két funkciót is tartalmaz, amelyek a size () és az empty (). Egy tömbnév kerül visszaadásra, amely azt jelzi, hogy a teljes tömb visszakerül a főprogramba. Itt hozzáadunk egy fejléc fájl tömböt. A könyvtáron kívül tartalmazza a tömb összes funkcióját.

#befoglalni

sor<int,10>funkció()

Mivel a teljes tömböt vissza tudjuk adni annak nevével, így egy függvény deklarációjában visszatérési típusként a tömböt fogjuk használni. Az adatok bekerülnek a tömbbe. Ezt követően a tömb visszatér a főprogramhoz. A fő funkció felé haladva egy tömbváltozó elfogadja a tömböt, amikor a függvény meghívásra kerül.

arr=funkció();

Ismét, a ciklus a tömbértékek megjelenítésére szolgál. Figyeljük az alábbi kép kimenetét. Mivel 10 méretet használtunk, 0 számot kell megadni. Ezért ezek jelennek meg:

Visszatérési tömb vektoros tárolón keresztül

Ez a megközelítés egy dinamikusan kiosztott tömb. Mint ebben az esetben, nincs szükség tömbméret megadására. Itt nincs szükség méretparaméterre. Ezt a példát használva hozzá kell adnunk egy vektorfejlécet a könyvtárhoz, amely tartalmazza a vektor funkcióit.

Haladunk a függvény felé, ahol a visszatérési típus is egy int vektor, és egy vektor mutatót is tartalmaz argumentumként a paraméterben. Itt egy temp nevű tömböt mutatunk be:

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

A függvény a tömb elemeit kettővel megszorozza a tmp.push_back () függvény használatával. Ezután adja vissza a tmp -t. Egy automatikus típusú változó elfogadja a tömb értékeit a függvényből. A tömb tartalmazza a benne található elemeket.

A kimenet a vektoros konténer működését mutatja.

Következtetés

A fent említett cikkben leírtuk az öt leggyakrabban használt módszert, amelyek megmagyarázzák a tömb függvényből történő visszaadásának funkcionalitását.