Vrátit pole z funkce C ++

Return Array From Function C



Pole jsou konkrétní kontejnery, které mají hodnoty stejného datového typu. Funkce v C ++ provádějí operace na polích a tato pole jsou pak vrácena do hlavní funkce. Existuje mnoho přístupů k popisu tohoto jevu. V této příručce jsou vysvětleny některé běžné metody:

Pomocí ukazatelů vraťte statické pole

Když použijeme normální pole, existuje šance, že dosáhneme nějakých abnormálních výsledků. Abychom tomu zabránili, používáme v našem kódu C ++ statické pole. Pojďme pochopit příklad, který jsme použili. V této funkci jsme deklarovali pole s 5 hodnotami návratového typu, jak je uvedeno zde.







Funkce Int *()



Protože hodnota bude celočíselného typu, je v níže uvedeném příkladu označena jako int. Jak jsme funkci zavedli jako ukazatel, funkce bude typu ukazatele. Po zadání hodnot se pole vrátí do hlavního programu.







V hlavním programu jsme provedli volání funkce. Abychom přijali hodnotu, která je vrácena z funkce, použijeme celočíselnou proměnnou. Když je pole vráceno, můžeme snadno přistupovat k jeho hodnotám. Hodnoty budou vytištěny ručně.

Int*ukazatel=funkce();

Účelem ukazatele je najít položku, která je přítomna na indexu jednoho z pole. Jinými slovy, ukazuje adresu hodnoty v poli. Poté použijeme prototyp funkce, který vrátí ukazatel.



Abychom viděli výstup pole vrácený prostřednictvím funkce, musíme mít v případě Linuxu přístup k terminálu Ubuntu. Důvodem je, že výstup je přístupný prostřednictvím terminálu Linux. V Linuxu potřebujeme kompilátor pro spouštění kódů C ++ napsaných v libovolném textovém editoru. Tato kompilace se provádí prostřednictvím G ++. -O se používá k uložení výstupu do souboru. Zde potřebujeme výstupní soubor a soubor zdrojového kódu. Po kompilaci spustíme kód:

$g ++ -nebosoubor1 soubor1.c
$./soubor 1

Z výstupu vidíme, že pole, které bylo inicializováno ve funkci, je zobrazeno v hlavní funkci pomocí statického pole, inicializovaného ručně a prostřednictvím ukazatelů.

Vraťte dynamicky přidělené pole pomocí ukazatelů

Pole lze vrátit pomocí dynamické alokace. Pole lze dynamicky přidělovat pomocí slova nové. Zůstanou tam, dokud je sami neodstraníme. Statické pole mají pevnou velikost, což znamená, že při inicializaci musíte zadat velikost. Jakmile je pole vytvořeno, je obtížné zvětšit velikost v době běhu nebo dále. Ale v případě dynamického pole můžeme přidat další položky, kdykoli chceme, protože se rozšiřuje, když do něj zadáváme hodnoty. Nepotřebujeme tedy specifikovat nebo identifikovat jakoukoli velikost.

Přejdeme k příkladu, který jsme zde použili. Použili jsme dynamické pole s ukazateli jako v předchozích příkladech, kde jsme použili ukazatele se statickými poli.

Int*funkce()

Po deklaraci funkce jsou pole deklarována dynamicky:

Int*pole= Nový int [100];

Termín nový se neustále používá k vytváření dynamického pole. Na poli budeme provádět operace zadáním hodnot do něj. Poté se pole vrátí do hlavního programu:

Nyní zvažte hlavní funkci. Zavolali jsme funkci. Když je pole vráceno, přidáme proměnnou celočíselného typu ukazatele, abychom hodnotu přijali.

Int*ukazatel=funkce();

Hodnoty uložené v poli se vytisknou ručně. Výstup je získán metodou kompilace a provádění.

Vraťte pole pomocí struktur

Struktury jsou kontejnery jako pole. Pole ale obsahuje hodnotu stejného datového typu najednou. A v případě struktur obsahují více než jednu hodnotu datového typu. Vzali jsme strukturu s názvem sample. Zde je deklarace pole uvnitř struktur namísto funkcí. Návratový typ je název struktury. Proměnná struktura je vrácena do hlavního programu. Struktura používá pro deklaraci slovo struct.

Strukturovaný vzorek
{
Int arr[100];
};

Po deklaraci struktury jsme použili funkci, ve které je vytvořen objekt struktury. Tento objekt bude použit pro přístup ke struktuře. Tato funkce vrátí objekt struktury do hlavní funkce, abychom mohli pole vytisknout prostřednictvím tohoto objektu. Proměnná získá hodnoty v proměnné. Tato hodnota je celé číslo, do kterého budeme do pole zadávat hodnoty. Stejně jako v tomto příkladu jsme jako číslo vybrali 6. Čísla tedy budou do pole zadána až 6.

Funkce Struct sample(intn)

Nyní, směrem k hlavnímu programu, jsme vytvořili objekt pro přístup k poli prostřednictvím tohoto:

Struktura vzorku x;

Po inicializaci objektu je do proměnné přidána hodnota, do které chceme, aby byla do pole zadána čísla. Při volání funkce předáme hodnotu v parametru:

X=funkce(n);

Displej budeme mít pomocí smyčky for. Hodnoty jsou zobrazeny prostřednictvím objektu deklarovaného na začátku hlavního programu:

Výstup ukazuje, že ve výsledku je zobrazeno 6 hodnot, protože jsme do programu zadali 6 čísel.

Zpětné pole pomocí Std

C ++ používá mnoho metod k vrácení pole z funkce. Jedním z nich je std :: array. Je to šablona struktury. Tato funkce také poskytuje další dvě funkce, které jsou size () a empty (). Je vrácen název pole, který označuje, že je celé pole vráceno do hlavního programu. Zde přidáme pole záhlaví. Kromě knihovny obsahuje všechny funkce pole.

#zahrnout

pole<int,10>funkce()

Protože můžeme vrátit celé pole s jeho názvem, tak v deklaraci funkce použijeme pole jako návratový typ. Data se zadávají do pole. Poté bude pole vráceno do hlavního programu. Pohybující se směrem k hlavní funkci, proměnná pole přijme pole při volání funkce.

arr=funkce();

Pro zobrazení hodnot pole bude opět použita smyčka for. Sledujeme výstup z obrázku zobrazeného níže. Protože jsme použili 10 velikostí, bude zadáno 0 čísel. Proto se zobrazují tyto:

Vraťte pole přes vektorový kontejner

Tento přístup je dynamicky alokované pole. Stejně jako v tomto případě není nutné zadávat velikost pole. Nepotřebujeme zde žádný parametr velikosti. Pomocí tohoto příkladu musíme do knihovny přidat záhlaví vektoru, které obsahuje funkce vektoru.

Přesun směrem k funkci, kde návratový typ je také int vektor a také obsahuje vektorový ukazatel jako argument v parametru. Zde je uvedeno pole s názvem temp:

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

Funkce bude vynásobit prvky pole dvěma pomocí funkce tmp.push_back (). Poté vraťte tmp. Proměnná automatického typu bude přijímat hodnoty pole z funkce. Pole obsahuje položky v něm.

Výstup ukazuje fungování vektorového kontejneru.

Závěr

Ve výše uvedeném článku jsme popsali pět nejčastěji používaných metod k vysvětlení funkčnosti vracení pole z funkce.