Ero osoittimen ja taulukon välillä

Osoitin vs. array

Osoitin on tietotyyppi, jolla on viittaus muistipaikkaan (ts. Osoittimen muuttuja tallentaa sen muistipaikan osoitteen, johon jotkut tiedot on tallennettu). Taulukot ovat yleisimmin käytetty tietorakenne elementtien kokoelman tallentamiseksi. Useimmat ohjelmointikielet tarjoavat menetelmiä matriisien ja pääsyelementtien ilmoittamiseksi helposti matriiseissa.

Mikä on osoitin?

Osoitin on tietotyyppi, joka tallentaa sen muistipaikan osoitteen, johon jotkut tiedot on tallennettu. Toisin sanoen osoitin pitää viittauksen muistipaikkaan. Muistipaikkaan tallennettujen tietojen käyttämistä, joihin osoitin viittaa, kutsutaan neuvottelujen purkamiseksi. Suorittamalla toistuvia toimintoja, kuten puiden / narujen liikkuminen, pöydän haku jne., Osoittimien käyttö parantaisi suorituskykyä. Tämä johtuu siitä, että osoittimien poistaminen ja kopioiminen on halvempaa kuin osoittimien osoittaman tiedon kopioiminen ja käyttäminen. Nollaosoitin on osoitin, joka ei osoita mihinkään. Java-järjestelmässä nollaosoittimen käyttäminen tuottaa NullPointerException-nimisen poikkeuksen.

Mikä on taulukko?

Kuvassa 1 on koodinpätkä, jota käytetään tyypillisesti taulukon arvojen ilmoittamiseen ja määrittämiseen. Kuvio 2 kuvaa kuinka taulukko näyttäisi muistista.

int-arvot [5];

arvot [0] = 100;

arvot [1] = 101;

arvot [2] = 102;

arvot [3] = 103;

arvot [4] = 104;

Kuva 1: Koodi taulukon arvojen ilmoittamiseen ja määrittämiseen


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

Kuva 2: Muistiin tallennettu taulukko

Yllä oleva koodi määrittelee taulukon, joka voi tallentaa 5 kokonaislukua ja niihin päästään indekseillä 0–4. Yksi tärkeä taulukon ominaisuus on, että koko taulukko allokoidaan yhtenä muistimuistina ja kukin elementti saa oman tilansa taulukossa. . Kun taulukko on määritelty, sen koko on kiinteä. Joten jos et ole varma taulukon koosta kokoamishetkellä, joudut määrittelemään riittävän suuren taulukon ollakseen turvallisella puolella. Mutta useimmiten aiomme tosiasiassa käyttää vähemmän elementtejä kuin olemme osoittaneet. Joten huomattavasti muistia menetetään todella. Toisaalta, jos ”riittävän suuri ryhmä” ei oikeastaan ​​ole riittävän suuri, ohjelma kaatuu.

Mitä eroa osoittimilla ja ryhmillä on??

Osoitin on tietotyyppi, joka tallentaa sen muistipaikan osoitteen, johon joitain tietoja on tallennettu, kun taas taulukot ovat yleisimmin käytetty tietorakenne elementtien kokoelman tallentamiseksi. C-ohjelmointikielessä taulukon indeksointi tehdään osoittimen aritmeettisella avulla (ts. Taulukon x: n i-elementti olisi vastaava kuin * (x + i)). Siksi C: ssä voidaan osoittaa joukko osoittimia, jotka osoittavat sarjaan peräkkäisiä muistin sijainteja, matriisina. Lisäksi on ero siinä, kuinka operaattorin koko toimii osoittimissa ja ryhmissä. Kun sitä lisätään taulukkoon, operaattorin koko palauttaa koko taulukon koon, kun taas osoittimeen sovellettaessa se palauttaa vain osoittimen koon..