Pole jsou jednou z nejjednodušších forem ukládání strukturovaných dat. Jelikož jsou nedělitelné oblasti paměti přiděleny pro ukládání jednorozměrných polí a většina programovacích jazyků má pro deklaraci syntaktické konstrukce, jsou intenzivně používány jako vyrovnávací paměti pro přenos velkého množství informací do různých funkcí (včetně knihoven). Funkce zase někdy musí pole vrátit.
Nezbytné
- - textový editor;
- - C nebo C ++ kompilátor a linker.
Instrukce
Krok 1
Vrátit data z funkce nebo metody umístěním do pole s pevnou délkou, přidělené volajícím a předané odkazem. Definujte vhodný datový typ, například: typedef int t_array10 [10]; Použijte jej při deklaraci a implementaci požadované funkce nebo metody: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Volejte vhodně: int aNumbers [10]; ReturnArray (aNumbers); Nevýhodou této metody je, že délka pole je pevná.
Krok 2
Vraťte data pole umístěním do výstupní vyrovnávací paměti přidělené volajícímu předané ukazatelem. Prototyp funkce nebo metody může obsahovat parametr deklarovaný v notaci pole bez specifikace velikosti: void ReturnArray (int anArray , int nSize); nebo jako ukazatel: void ReturnArray (int * pnArray, int nSize); V obou případech lze parametr identifikátoru použít v zápisu pole: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Tato metoda předávání polí funkcím a vracení dat z nich z pole se v drtivé většině případů používá při vývoji programů C. Pamatujte, že funkce a metody, které tímto způsobem přijímají a vracejí data, musí zpravidla mít další parametr, kterým se předává skutečná velikost vyrovnávací paměti.
Krok 3
Vrátí pole vytvořené funkcí nebo metodou. Formálně by v tomto případě nemělo být vráceno pole, ale ukazatel na jeho první prvek: int * ReturnArray () {int * pnArray = new int [10]; // práce s pnArray návrat pnArray;} // získání ukazatele na vytvořené pole int * pnNumbers = ReturnArray (); // use delete pnNumbers; // delete Tato metoda má určitá omezení. Pole tedy musí být umístěno v haldě. Kromě toho musí být jeho smazání provedeno metodou odpovídající vytvoření (smazat v případě použití new, free for malloc atd.).
Krok 4
Při vývoji programů v C ++ můžete třídy kontejnerů pohodlně vracet pole. Příklad vytvoření a vrácení pole, které je objektem třídy vektorové šablony standardní knihovny šablon C ++ zadané pro int, může vypadat takto: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Všimněte si, že většina populárních frameworků poskytuje výkonné třídy nebo šablony tříd matic. Často implementují koncept implicitního sdílení dat s počítáním referencí a kopírováním při zápisu. Proto se návrat podle hodnoty takových polí z funkcí provádí velmi efektivně a je spojen s minimální spotřebou výpočetních prostředků.