Předání pole funkci C ++

Passing An Array Function C

Pole je skupina prvků stejného datového typu. Mnoho funkcí je prováděno na polích buď v hlavním programu, nebo mimo něj, ve funkcích. V C ++ je v případě funkcí potřebujeme předat. To se provádí pomocí parametrů jako argumentů. Tyto argumenty mohou mít různé způsoby, buď značná pole, nebo prostřednictvím pole ukazatelů. V tomto tutoriálu se budeme zabývat některými hlavními aspekty přenosu polí pomocí různých parametrů funkcí.

Syntax

[Vrátit setyp] [jménofunkce] (datatypnázev pole[polevelikost])

{

funkcetělo

}

Příklad 1

Zvažte příklad, ve kterém musíme vytisknout známky studentů v programu C ++. Tento tisk bude převzat v samostatné funkci, nikoli v hlavním programu. Naproti tomu vezmeme vstupy v hlavním programu a tyto hodnoty přeneseme do funkce jako parametr. Zvažte funkci. V jeho parametru je proměnná datového typu pole, která bude přijímat hodnoty pole. Zde je deklarováno celé pole. Značky se zobrazí pomocí smyčky for. Stejně jako v polích potřebujeme smyčky, abychom z nich získali tisk.





Pohybující se směrem k hlavní funkci deklarujeme pole s jeho velikostí a hodnotami v něm. Jak musíme funkci nazvat. Metoda tedy spočívá v tom, že jako parametr zapíšeme do parametru název funkce s názvem pole. Nemáme definovanou velikost pole.



Zobrazit(značky);

Argument v parametru implikuje adresu paměti pole. V parametru záhlaví funkce je int m [7] převedeno na int *m. To zahrnuje stejnou adresu jako původní pole. Když použijeme m [5] v těle funkce, budeme manipulovat s původním polem.

Prázdný displej(int m[7] )

V operačním systému Linux získání výstupu prostřednictvím terminálu vyžaduje instalaci určitých předpokladů. Ke kompilaci a následnému spuštění kódu v terminálu příkazového řádku potřebuje kompilátor. Pro kompilaci se v jazyce C ++ používá G ++.



$g ++ -nebokód3 kód3.c

$./kód3

Kde –o se používá k uložení výstupu ze zdrojového souboru do výstupního souboru.

Z výstupu můžete pozorovat, že všechna čísla inicializovaná v poli v hlavní funkci jsou předávána a zobrazována prostřednictvím funkce zobrazení.

Příklad 2

Další příklad týkající se pole procházejícího parametrem je předání vícerozměrného pole funkci. Zde se používá dvourozměrné pole (2d). V hlavní funkci potřebujeme inicializovat pole.

Int pole[řádek][sloupec]

Inicializace 2D pole obsahuje řádek a sloupec. A jejich pořadí má být zachováno v celém programu. Pole 2d je inicializováno dvěma čísly v závorkách. Jak jsme popsali 2 sloupce v inicializaci.

Zobrazit(na jednom);

Jako argument použijeme pouze název pole v parametru.

Nyní si prohlédneme fungování funkce displeje. Při spuštění funkce vyžaduje proměnnou pole, aby přijala pole předané voláním funkce přes hlavní program.

Prázdný displej(int n[][2] )

Je povinné uvést počet sloupců. Ve srovnání to není v případě řádků podstatné. Proto jsme zde pro zobrazení výsledků ponechali prázdné závorky řádků. Ale v případě 2-dimenzionálního pole používáme vnořenou smyčku for. Obsahuje dva příkazy se 2 proměnnými.

Výstup můžeme zobrazit pomocí stejného kompilátoru. Můžete vidět výsledky, že každá hodnota je zobrazena samostatně s číslem řádku a sloupce.

Příklad 3

Tento příklad je trochu odlišný od předchozích. V tomto příkladu zmiňujeme velikost pole v parametru volání funkce. A v deklaraci funkce je také zavedena proměnná, která přijímá velikost pole.

Počínaje hlavním programem se inicializuje pole s hodnotami.

Prům. = Průměr(Zůstatek,5);

Výsledek bude uložen v avg proměnné. Místo předávání pouze názvu pole se do parametru přidá také velikost pole.

Parametr také obsahuje proměnnou typu pole a celočíselný datový typ pro příjem velikosti pole. Typ hlavního programu je int, protože bude od funkce přijímat celočíselnou hodnotu. Jinak je v ostatních případech neplatný.

Nyní uvidíme výstup. Tato hodnota je viditelná prostřednictvím obrázku získaného z funkce.

Příklad 4

Tento příklad se týká určení maximálního počtu v poli ze dvou polí. Zde inicializujeme dvě pole v hlavním programu. Obě pole jsou do funkce předána samostatně v samostatných voláních funkcí

tisk Max(arr1);

tisk Max(arr2);

kde printMax je název funkce a arr je pole. Výsledek se nevrátí z funkce a zobrazí se tam. Pro smyčka vypočítá maximální počet v obou polích. If-statement se používá uvnitř smyčky for. Záhlaví funkce je:

prázdný tisk Max(int arr[5])

Protože obě pole obsahují různé hodnoty, budou oba výsledky odlišné.

Příklad 5

Tento příklad je souhrnem všech typů polí procházejících parametry. Mohou to být velká, nevelká nebo pointerová pole. Budeme je zvažovat jeden po druhém.

V hlavním programu je každá funkce deklarována jako první. Na rozdíl v jejich prohlášení můžete poukázat.

Int součet 1(int tmp[5]);

Int součet 2(int tmp[]);

Int součet 3(int*tmp);

Tato tři pole zobrazují, že pole lze předávat s těmito parametry ve funkci.

Po inicializaci funkce máme hlavní program, ve kterém je pole deklarováno. Na rozdíl od předchozího příkladu je jedno pole inicializováno místo dvou, ale je předáno třemi různými způsoby. Nyní uvidíme volání funkcí provedená zde.

Celkem = součet 1(odbyt);

Celkem = součet 2(odbyt);

Celkem = součet 3(odbyt);

Výstup je zobrazen v hlavní funkci, takže je deklarována proměnná, která přijímá hodnotu vrácenou funkcí. Ze všech tří volání funkcí vidíte, že zde jsou parametry stejné. Každé pole obsahuje pouze název pole. Parametry funkce, která pole přijímá, se však liší.

Vnitřní tělo všech tří funkcí je stejné, protože součet všech čísel se vypočítá z použití smyčky For. Metodika a hodnoty pole jsou stejné; pouze existuje diskriminace mezi parametry funkcí. Proto je dokázáno, že můžeme buď použít různé metody k přijetí pole, nebo provádět stejnou funkci, a odpověď je stejná. Můžeme to potvrdit kontrolou výstupu. Pomocí stejného postupu kompilace získáme výstup zobrazený na níže připojeném obrázku.

Vidíte, že odpověď je stejná pro všechny tři použité funkce.

Závěr

V tomto článku se uživatel dozví o předávací metodě pole v parametrech. Pole lze v mnoha případech zpracovat, pokud jde o vrácení hodnoty nebo její předávání v argumentech.