Žymeklis prieš masyvą
Žymiklis yra duomenų tipas, kuriame yra nuoroda į atminties vietą (t. y. žymeklio kintamasis saugo atminties vietos, kurioje saugomi kai kurie duomenys, adresą). Masyvai yra dažniausiai naudojama duomenų struktūra elementų rinkiniui saugoti. Dauguma programavimo kalbų pateikia metodus, kaip lengvai deklaruoti masyvus ir pasiekti masyvo elementus.
Kas yra rodyklė?
Žymiklis yra duomenų tipas, kuriame saugomas atminties vietos, kurioje saugomi kai kurie duomenys, adresas. Kitaip tariant, rodyklė turi nuorodą į atminties vietą. Prieiga prie duomenų, saugomų atminties vietoje, kurią nurodo žymeklis, vadinamas nuorodų panaikinimu. Atliekant pasikartojančias operacijas, tokias kaip medžių / eilučių kirtimas, lentelės paieška ir pan., naudojant rodykles pagerės našumas. Taip yra todėl, kad nuorodų panaikinimas ir kopijavimas yra pigesnis nei faktinis rodyklėmis nurodytų duomenų kopijavimas ir prieiga prie jų. Nulinė rodyklė yra rodyklė, kuri nieko nenurodo. „Java“programoje, pasiekiant nulinę žymeklį, būtų sukurta išimtis, vadinama NullPointerException.
Kas yra masyvas?
Pavaizduota 1 paveiksle, yra kodo dalis, paprastai naudojama masyvo reikšmėms deklaruoti ir priskirti. 2 paveiksle pavaizduota, kaip masyvas atrodytų atmintyje.
int vertės[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
1 pav. Kodas, skirtas deklaruoti ir priskirti vertes masyvei
100 | 101 | 102 | 103 | 104 |
Indeksas: 0 | 1 | 2 | 3 | 4 |
2 pav. Atmintyje saugomas masyvas
Aukščiau pateiktas kodas apibrėžia masyvą, kuriame gali būti saugomi 5 sveikieji skaičiai ir jie pasiekiami naudojant indeksus nuo 0 iki 4. Viena svarbi masyvo savybė yra ta, kad visas masyvas yra paskirstomas kaip vienas atminties blokas ir kiekvienas elementas gauna savo savo erdvę masyve. Kai masyvas yra apibrėžtas, jo dydis yra fiksuotas. Taigi, jei nesate tikri dėl masyvo dydžio kompiliavimo metu, turėtumėte apibrėžti pakankamai didelį masyvą, kad būtumėte saugioje pusėje. Tačiau dažniausiai mes iš tikrųjų ketiname naudoti mažiau elementų, nei skyrėme. Taigi iš tikrųjų eikvojama nemažai atminties. Kita vertus, jei „pakankamai didelis masyvas“iš tikrųjų nėra pakankamai didelis, programa sugenda.
Kuo skiriasi rodyklės ir masyvai?
Žymiklis yra duomenų tipas, kuriame saugomas atminties vietos, kurioje saugomi kai kurie duomenys, adresas, o masyvai yra dažniausiai naudojama duomenų struktūra elementų rinkiniui saugoti. C programavimo kalboje masyvo indeksavimas atliekamas naudojant rodyklės aritmetiką (t. y. i-asis masyvo x elementas atitiktų (x+i)). Todėl C kalboje rodyklių rinkinys, nukreipiantis į iš eilės einančių atminties vietų rinkinį, gali būti laikomas masyvu. Be to, skiriasi tai, kaip operatoriaus dydis veikia rodyklėmis ir masyvais. Pritaikius masyvei, operatorius sizeof grąžins visą masyvo dydį, o pritaikius žymekliui, jis grąžins tik žymeklio dydį.