Razlika med kazalcem in matriko

Pointer proti Array

Kazalnik je vrsta podatkov, ki vsebuje referenco na pomnilniško lokacijo (tj. Spremenljivka kazalca shrani naslov pomnilniške lokacije, v kateri so shranjeni nekateri podatki). Nizi so najpogosteje uporabljena struktura podatkov za shranjevanje zbirke elementov. Večina programskih jezikov ponuja metode za enostavno deklariranje nizov in dostop do elementov v matrikah.

Kaj je kazalec?

Kazalnik je vrsta podatkov, ki shrani naslov pomnilniške lokacije, v kateri so shranjeni nekateri podatki. Z drugimi besedami, kazalec se sklicuje na pomnilniško lokacijo. Dostop do podatkov, shranjenih na pomnilniškem mestu, na katerega se nanaša kazalec, se imenuje dereferenciranje. Pri izvajanju ponavljajočih se operacij, kot so prečenje dreves / vrvic, iskanje tabel itd., Bi uporaba kazalcev izboljšala zmogljivost. To je zato, ker so napotitve in kopiranje kazalcev cenejše kot dejansko kopiranje in dostop do podatkov, na katere kažejo kazalci. Ničelni kazalec je kazalec, ki ne kaže na nič. V Javi bi dostop do ničelnega kazalca ustvaril izjemo, imenovano NullPointerException.

Kaj je matrika?

Na sliki 1 je del kode, ki se običajno uporablja za razglasitev in dodelitev vrednosti matriki. Slika 2 prikazuje, kako bi v pomnilniku izgledal niz.

int vrednosti [5];

vrednosti [0] = 100;

vrednosti [1] = 101;

vrednosti [2] = 102;

vrednosti [3] = 103;

vrednosti [4] = 104;

Slika 1: Koda za razglasitev in dodelitev vrednosti matriki


100 101 102 103 104
Kazalo: 0 1 2 3 4

Slika 2: Array, shranjen v pomnilniku

Zgornja koda določa matriko, ki lahko shrani 5 celih števil in do njih dostopajo z indeksi 0 do 4. Ena pomembna lastnost matrike je ta, da je celotna matrika dodeljena kot en blok pomnilnika in vsak element dobi svoj prostor v polju . Ko je niz definiran, je njegova velikost določena. Če v času prevajanja niste prepričani o velikosti matrike, bi morali definirati dovolj velik niz, da bo na varni strani. Toda večinoma bomo uporabili manjše število elementov, kot smo jih dodelili. Tako je zapravila precejšnjo količino spomina. Po drugi strani pa, če "dovolj velik niz" dejansko ni dovolj velik, bi se program zrušil.

Kakšna je razlika med kazalci in nizi?

Kazalnik je vrsta podatkov, ki shrani naslov pomnilniške lokacije, v kateri so shranjeni nekateri podatki, medtem ko so Arrays najpogosteje uporabljena struktura podatkov za shranjevanje zbirke elementov. V programskem jeziku C indeksiranje matrike poteka s pomočjo aritmetike kazalca (tj. I-element matrike x bi bil enakovreden * (x + i)). Zato je v C nabor kazalcev, ki kažejo na niz zaporednih pomnilniških mest, mogoče obravnavati kot matriko. Poleg tega je razlika v tem, kako operater sizeof deluje na kazalcih in nizih. Ko ga uporabimo za matriko, operator sizeof vrne celotno velikost matrike, medtem ko bi, ko ga uporabimo za kazalec, vrnil ravno velikost kazalca.