Pole jsou jednou z nejčastěji používaných forem ukládání dat v průběhu provozu programu. Umožňují vám uspořádat prvky stejného typu v seřazeném pořadí a získat k nim rychlý přístup pomocí indexu. Velmi často při vývoji aplikací ve výkonných a flexibilních programovacích jazycích, které umožňují přímý přístup do paměti, jako je C ++, musíte určit velikost pole.
Nezbytné
Překladač C ++
Instrukce
Krok 1
Určete velikost pole v době kompilace výpočtem pomocí operátoru sizeof. Tento operátor vrací množství paměti (v bajtech) obsazené argumentem, který mu byl předán. Argumentem může být buď proměnná, nebo identifikátor typu. Operátor sizeof vrací konečné množství paměti obsazené objektem ve fázi provádění programu (s přihlédnutím například k nastavení zarovnání polí struktury), ale jeho výpočet se provádí ve fázi kompilace.
Krok 2
Chcete-li určit velikost pole pomocí operátoru sizeof, vydělte celou jeho velikost velikostí jednoho prvku. Například pokud máte následující definici pole: int aTemp = {10, 20, 0xFFFF, -1, 16}, pak jeho velikost lze vypočítat jako: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Krok 3
Pro pohodlnější použití této metody má smysl definovat makro: #define counttof (a) (sizeof (a) / sizeof (a [0])) Všimněte si, že protože hodnota operátoru sizeof se počítá při kompilaci čas, v místě, kde se provádí výpočet, musí být výslovně k dispozici informace o objemu pole a jeho prvcích. Jinými slovy je nemožné určit parametry pole neznámé velikosti pomocí jeho externí deklarace.
Krok 4
Určete velikost pole během provádění programu pomocí známého znaménka jeho ukončení. Jedním z přístupů, které umožňují ukládání a přenos dat ve formě polí neurčité délky, je přidělit speciální hodnotu znaménku označujícímu dokončení datové sekvence. Například jednobajtové řetězce ve stylu C, které jsou znakovými poli, musí končit hodnotou 0, zabalená pole C s proměnnou délkou jsou zakončena nulou a pole ukazatelů musí být zakončena nulou.
Krok 5
Chcete-li určit velikost pole reprezentovaného tímto způsobem, skenujte jej prvek po prvku, dokud nenajdete zakončovací prvek. Zvýšení počitadla inicializovaného nulou během skenování. Nebo zvyšte hodnotu ukazatele na prvek pole a po skenování vypočítejte rozdíl mezi ukazateli na aktuální a první prvky.
Krok 6
Získejte velikost dynamického pole představovaného objektem rozhraní nebo knihovny voláním jeho metody. Jakékoli třídy, které zapouzdřují funkčnost takových polí, mají metody pro získání aktuálního počtu prvků. Například třída šablony std:: vector standardní knihovny C ++ má metodu velikosti, třída QV v rámci Qt má metodu count a analogická třída CArray v MFC má metodu GetCount.