A tömbök az egyik leggyakrabban használt adattárolási forma a program működése során. Lehetővé teszik az azonos típusú elemek rendezett sorrendbe rendezését, és gyors elérést indexük alapján. Nagyon gyakran, amikor olyan erőteljes és rugalmas programozási nyelveken fejlesztenek alkalmazásokat, amelyek lehetővé teszik a közvetlen memóriamegközelítést, mint például a C ++, meg kell határozni a tömb méretét.
Szükséges
C ++ fordító
Utasítás
1. lépés
Határozza meg a tömb méretét a fordítás idején úgy, hogy kiszámítja azt a sizeof operátor segítségével. Ez az operátor visszaadja a memóriát (bájtban), amelyet a neki átadott argumentum foglal el. Az argumentum lehet változó vagy típusazonosító. A sizeof operátor visszaadja az objektum által a program végrehajtásának szakaszában elfoglalt véges memóriamennyiséget (figyelembe véve például a struktúramezők igazításának beállításait), de annak kiszámítását az összeállítás szakaszában végzik.
2. lépés
A tömb méretének meghatározásához a sizeof operátor segítségével ossza el a teljes méretét egy elem méretével. Például, ha a következő tömb definícióval rendelkezik: int aTemp = {10, 20, 0xFFFF, -1, 16}, akkor annak mérete kiszámítható: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
3. lépés
A módszer kényelmesebb használata érdekében érdemes meghatározni egy makrót: #define countof (a) (sizeof (a) / sizeof (a [0])) Vegye figyelembe, hogy mivel az operátor sizeof értékét a fordításkor számoljuk A számítás elvégzésének időpontjában a tömb térfogatára és elemeire vonatkozó információknak kifejezetten rendelkezésre kell állniuk. Más szavakkal, lehetetlen meghatározni egy ismeretlen méretű tömb paramétereit külső deklarációjával.
4. lépés
Határozza meg a tömb méretét a program végrehajtása során, a megszüntetés ismert jele alapján. Az egyik megközelítés, amely lehetővé teszi az adatok tárolását és továbbítását határozatlan hosszúságú tömbök formájában, az az, hogy az adatszekvencia befejezését jelző jelhez külön értéket rendelünk. Például az egybájtos C-stílusú karaktersorozatoknak, amelyek karaktertömbök, 0-val kell végződniük, a változó hosszúságú, csomagolt változó hosszúságú C-karaktersorozatok nulla végűek, a mutató tömböknek pedig null-végűek.
5. lépés
Az így ábrázolt tömb méretének meghatározásához elemenként elemezze be, amíg meg nem találja a befejező elemet. Növelje a nulla inicializált számlálót a vizsgálat során. Vagy növelje a mutató értékét tömb elemre, és a beolvasás után számítsa ki az aktuális és az első elemre mutató mutatók közötti különbséget.
6. lépés
Szerezze meg a keretrendszer vagy a könyvtár objektum által képviselt dinamikus tömb méretét a metódusának meghívásával. Bármely osztály, amely az ilyen tömbök funkcionalitását foglalja magában, rendelkezik módszerekkel az aktuális elemek számának megszerzésére. Például a C ++ szabványos könyvtár std:: vektor sablon osztályának van méretmódszere, a Qt keretrendszer QVector osztályának számlálási módszere, az MFC analóg CArray osztályának pedig GetCount metódusa van.