Nizovi su jedan od najčešće korištenih oblika pohrane podataka tokom rada programa. Omogućuju vam organiziranje elemenata istog tipa u poredani niz i brzi pristup indeksima. Vrlo često, kada razvijate aplikacije na moćnim i fleksibilnim programskim jezicima koji omogućavaju direktan pristup memoriji, poput C ++, morate odrediti veličinu niza.
Potrebno
C ++ kompajler
Instrukcije
Korak 1
Odredite veličinu niza u vrijeme kompajliranja izračunavanjem pomoću operatora sizeof. Ovaj operator vraća količinu memorije (u bajtovima) koju zauzima argument koji mu je proslijeđen. Argument može biti varijabla ili identifikator tipa. Operator sizeof vraća konačnu količinu memorije koju je objekt zauzeo u fazi izvođenja programa (uzimajući u obzir, na primjer, postavke za poravnanje polja strukture), ali se njegovo izračunavanje vrši u fazi kompilacije.
Korak 2
Da biste odredili veličinu niza pomoću operatora sizeof, podijelite njegovu cijelu veličinu s veličinom jednog elementa. Na primjer, ako imate sljedeću definiciju niza: int aTemp = {10, 20, 0xFFFF, -1, 16}, tada se njegova veličina može izračunati kao: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Korak 3
Za praktičniju upotrebu ove metode, ima smisla definirati makronaredbu: #define countof (a) (sizeof (a) / sizeof (a [0])) Imajte na umu da, budući da se vrijednost sizeof operatora izračunava pri kompajliranju vrijeme, na mjestu gdje se vrši proračun, informacije o volumenu niza i njegovim elementima moraju biti eksplicitno dostupne. Drugim riječima, nemoguće je odrediti parametre niza nepoznate veličine pomoću njegove eksterne deklaracije.
Korak 4
Odredite veličinu niza tokom izvođenja programa, koristeći poznati znak njegovog prekida. Jedan od pristupa koji omogućava pohranjivanje i prijenos podataka u obliku nizova neodređene dužine je dodjela posebne vrijednosti znaku koji označava dovršetak niza podataka. Na primjer, jednobajtni nizovi u stilu C koji su nizovi znakova moraju se završavati vrijednošću 0, pakirani nizovi C-niza promjenjive duljine završavaju se nulom, a nizovi pokazivača moraju biti završeni nulom.
Korak 5
Da biste odredili veličinu niza predstavljenog na ovaj način, skenirajte ga element po element dok ne pronađete završni element. Povećajte nula-inicijalizirani brojač tokom skeniranja. Ili, povećajte vrijednost pokazivača na element niza i nakon skeniranja izračunajte razliku između pokazivača na trenutni i prvi element.
Korak 6
Dobijte veličinu dinamičkog niza predstavljenog okvirom ili objektom biblioteke pozivanjem njegove metode. Sve klase koje obuhvaćaju funkcionalnost takvih nizova imaju metode za dobivanje trenutnog broja elemenata. Na primjer, klasa predloška std:: vector standardne biblioteke C ++ ima metodu veličine, klasa QVector Qt okvira ima metodu brojanja, a analogna klasa CArray MFC-a ima metodu GetCount.