Kuidas Määrata Massiivi Suurust

Sisukord:

Kuidas Määrata Massiivi Suurust
Kuidas Määrata Massiivi Suurust

Video: Kuidas Määrata Massiivi Suurust

Video: Kuidas Määrata Massiivi Suurust
Video: nullist eksperdini poole tunni pärast + Armatuurlaud! 2024, Detsember
Anonim

Massiivid on üks kõige sagedamini kasutatavatest andmete salvestamise vormidest programmi töö käigus. Need võimaldavad teil korraldada sama tüüpi elemente järjestatud järjestuses ja saada neile kiire juurdepääs indeksite kaupa. Väga sageli, kui arendate rakendusi võimsates ja paindlikes programmeerimiskeeltes, mis võimaldavad otsest juurdepääsu mälule, näiteks C ++, peate määrama massiivi suuruse.

Kuidas määrata massiivi suurust
Kuidas määrata massiivi suurust

Vajalik

C ++ kompilaator

Juhised

Samm 1

Tehke kindlaks massiivi suurus kompileerimise ajal, arvutades selle operaatori sizeof abil. See operaator tagastab talle edastatud argumendi hõivatud mälumahu (baitides). Argumendiks võib olla muutuja või tüübi identifikaator. Operaator size suuruse tagastab objekti täitmise etapil objekti poolt hõivatud lõpliku mäluhulga (võttes arvesse näiteks struktuuriväljade joondamise sätteid), kuid selle arvutamine toimub kompileerimise etapis.

2. samm

Massiivi suuruse määramiseks operaatori sizeof abil jagage kogu suurus ühe elemendi suurusega. Näiteks kui teil on järgmine massiivi määratlus: int aTemp = {10, 20, 0xFFFF, -1, 16}, saab selle suuruse arvutada järgmiselt: int nSize = sizeof (aTemp) / sizeof (aTemp) [0]);

3. samm

Selle meetodi mugavamaks kasutamiseks on mõistlik määratleda makro: #define countof (a) (sizeof (a) / sizeof (a [0])). Pange tähele, et kuna operaatori size väärtus arvutatakse kompileerimisel ajal, kus arvutus viiakse läbi, peab teave massiivi mahu ja selle elementide kohta olema selgesõnaliselt kättesaadav. Teisisõnu, selle välise deklaratsiooni abil on võimatu määrata tundmatu suurusega massiivi parameetreid.

4. samm

Määrake massiivi suurus programmi käivitamise ajal, kasutades teadaolevat selle lõpetamise märki. Üks lähenemisviis, mis võimaldab andmeid salvestada ja edastada määramata pikkusega massiividena, on erilise väärtuse eraldamine märgi jaoks, mis näitab andmesarja lõppu. Näiteks ühebaidised C-stiilis stringid, mis on märgistiku massiivid, peavad lõppema väärtusega 0, pakitud muutuva pikkusega C-stringiga massiivid on nullotsaga ja osuti massiivid nullotsaga.

5. samm

Sel viisil kujutatud massiivi suuruse määramiseks skannige seda elementide kaupa, kuni leiate lõpetava elemendi. Suurendage skaneerimise ajal null-initsialiseeritud loendurit. Või suurendage osuti väärtust massiivi elemendiks ja arvutage pärast skannimist praeguste ja esimeste elementide vahel olevate osutite vahe.

6. samm

Selle meetodi kutsumisel saate raamistiku või teegiobjektiga kujutatud dünaamilise massiivi suuruse. Kõigil klassidel, mis kapseldavad selliste massiivide funktsionaalsust, on meetodid praeguse elementide arvu saamiseks. Näiteks C ++ standardraamatukogu std:: vektorimalli klassil on suuruse meetod, Qt raamistiku klassil QVector on loendamismeetod ja MFC analoogsel CArray klassil on meetod GetCount.

Soovitan: