Arrays er en af de hyppigst anvendte former for datalagring i løbet af programdriften. De giver dig mulighed for at organisere elementer af samme type i en ordnet sekvens og få hurtig adgang til dem ved hjælp af indeks. Meget ofte, når du udvikler applikationer i kraftfulde og fleksible programmeringssprog, der tillader direkte hukommelsesadgang, såsom C ++, skal du bestemme størrelsen på arrayet.
Nødvendig
C ++ - kompilator
Instruktioner
Trin 1
Bestem arrayets størrelse ved kompileringstid ved at beregne det ved hjælp af operatorens størrelse. Denne operatør returnerer mængden af hukommelse (i byte) optaget af argumentet, der sendes til den. Argumentet kan enten være en variabel eller en typeidentifikator. Operatørstørrelsen returnerer den endelige mængde hukommelse, der er optaget af objektet på tidspunktet for programudførelse (under hensyntagen til for eksempel indstillingerne for justering af strukturfelterne), men dets beregning udføres i kompileringsfasen.
Trin 2
For at bestemme størrelsen på en matrix ved hjælp af operatorens størrelse skal du dele hele dens størrelse med størrelsen på et element. For eksempel, hvis du har følgende definition af en matrix: int aTemp = {10, 20, 0xFFFF, -1, 16}, kan dens størrelse beregnes som: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Trin 3
For en mere bekvem anvendelse af denne metode er det fornuftigt at definere en makro: #define countof (a) (sizeof (a) / sizeof (a [0])) Bemærk, at da værdien af operatorstørrelsen beregnes ved kompilering tidspunkt, på det tidspunkt, hvor beregningen udføres, skal oplysninger om arrayets volumen og dets elementer være eksplicit tilgængelige. Med andre ord er det umuligt at bestemme parametrene for en matrix af ukendt størrelse ved dens eksterne erklæring.
Trin 4
Bestem størrelsen på arrayet under udførelsen af programmet ved hjælp af det kendte tegn på dets afslutning. En af fremgangsmåderne, der tillader lagring og transmission af data i form af arrays af ubestemt længde, er at tildele en speciel værdi til et tegn, der angiver afslutningen af en datasekvens. For eksempel skal enkeltbyte C-stilstrenge, der er tegnrække, slutte med en værdi på 0, pakket C-strengrække med variabel længde er nul-afsluttet, og markørarrays skal være null-afsluttet.
Trin 5
For at bestemme størrelsen på et array, der er repræsenteret på denne måde, skal du scanne det element for element, indtil du finder det afsluttende element. Forøg nul-initialiseret tæller under scanningen. Eller øg markørens værdi til et array-element, og efter scanning skal du beregne forskellen mellem markørerne til det aktuelle og det første element.
Trin 6
Få størrelsen på et dynamisk array, der er repræsenteret af et ramme- eller biblioteksobjekt ved at kalde dets metode. Alle klasser, der indkapsler funktionaliteten af sådanne arrays, har metoder til at få det aktuelle antal elementer. F.eks. Har std:: vektor-skabelonklassen i C ++ - standardbiblioteket en størrelsesmetode, Qt-rammens QVector-klasse har en optællingsmetode, og MFC's analoge CArray-klasse har en GetCount-metode.