Arrays är en av de vanligaste formerna för datalagring under programdriften. De låter dig ordna element av samma typ i en ordnad sekvens och få snabb åtkomst till dem genom index. Mycket ofta, när du utvecklar applikationer på kraftfulla och flexibla programmeringsspråk som tillåter direkt minnesåtkomst, till exempel C ++, måste du bestämma storleken på matrisen.
Nödvändig
C ++ - kompilator
Instruktioner
Steg 1
Bestäm storleken på matrisen vid kompileringstiden genom att beräkna den med operatörens storlek. Den här operatören returnerar mängden minne (i byte) som upptas av argumentet som skickas till det. Argumentet kan vara antingen en variabel eller en typidentifierare. Operatörens storlek returnerar den ändliga mängden minne som upptas av objektet i programkörningsstadiet (med beaktande av exempelvis inställningarna för inriktning av strukturfält), men dess beräkning utförs i sammanställningssteget.
Steg 2
För att bestämma storleken på en matris med hjälp av operatörens storlek, dela hela dess storlek med storleken på ett element. Om du till exempel har följande definition av en matris: int aTemp = {10, 20, 0xFFFF, -1, 16}, kan dess storlek beräknas som: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Steg 3
För en mer bekväm användning av denna metod är det meningsfullt att definiera ett makro: #define countof (a) (sizeof (a) / sizeof (a [0])) Observera att eftersom värdet på operatörens storlek beräknas vid kompilering tid, vid den punkt där beräkningen utförs, måste information om volymen för matrisen och dess element vara tillgänglig uttryckligen. Med andra ord är det omöjligt att bestämma parametrarna för en matris av okänd storlek genom dess externa deklaration.
Steg 4
Bestäm storleken på matrisen under genomförandet av programmet med det kända tecknet på dess avslutning. En av tillvägagångssätten som möjliggör lagring och sändning av data i form av matriser med obestämd längd är att allokera ett speciellt värde för ett tecken som indikerar fullbordandet av en datasekvens. Till exempel måste C-stilsträngar med en byte som är teckenmatriser sluta med värdet 0, packade C-strängmatriser med variabel längd är nollavslutade och pekmatriserna måste vara null-avslutade.
Steg 5
För att bestämma storleken på en array som representeras på detta sätt, skanna den element för element tills du hittar det avslutande elementet. Öka räknaren för nollinitialisering under skanningen. Eller öka pekarens värde till ett arrayelement och beräkna skillnaden mellan pekarna och det aktuella och första elementet efter skanning.
Steg 6
Få storleken på en dynamisk array som representeras av ett ramverk eller biblioteksobjekt genom att anropa dess metod. Alla klasser som inkapslar funktionerna hos sådana matriser har metoder för att få det aktuella antalet element. Till exempel har std:: vektormallklassen i C ++ - standardbiblioteket en storleksmetod, Qt-ramverkets QVector-klass har en räknemetod och MFC: s analoga CArray-klass har en GetCount-metod.