Gå til innhold

Anbefalte innlegg

Jeg leser boka mi her og har nettopp kommet til kapittelett om pekere.

Her forteller boka om hvor likt det er tabeller

(nå har jeg sansynlig vis missfortstått en del ting, men her kommer ihverfall spørsmålet)

Hvis pekere og tabeller er så likt, og man kan spare plass med og oprette noder og slette dem med new og delete, hva er da poenget med å bruke tabeller, er ikke pekere da mye bedre? Da sparer man jo plass? :dontgetit:

Endret av zirener
Lenke til kommentar
Videoannonse
Annonse

En tabell er en peker til første posisjon i tabellen, så setter du av plass til hele greien. Tabeller er et forenklet interface, slik at dersom du skal sette noe inn i tabellen din kan du bruke:

 

eksempel[5] = 3.9;

 

som setter 3.9 inn ett offset på 5 fra den første posisjonen... Dette er penere kode enn alternativet (du allokerer plass bak en vanlig peker og akksesserer offsetet ifra med 5*størrelsen til typen (her double) ) og kjappere enn å drive å opprette og slette noder hele veien.

Om du skal opprette noen titalls noder må du jo ha en container for dem uansett, og da sparer du alikavel plass ettersom at dersom du skulle laget f.eks en linket liste ville den bestått av både n pekere og n verdier av typen double.

Lenke til kommentar

Du kan stort sett behandle pekere som de skulle være arrays, forskjellen ligger i at kompilatoren kjenner størrelsen på et array og kan (de)allokere det automatisk. F.eks fungerer

double *tab(new double[20]);
tab[19] = 2.2;

Dette er ekvivalent med

*(tab + 19) = 2.2;

 

Edit: Du sparer ikke plass ved å allokere minne med new, bare så det er sagt. Forskjellen er at du kan dynamisk allokere minne, mens med arrays må størrelsen være kjent for kompilatoren (dvs. et tall som er bestemt ved kompilering).

Endret av A_N_K
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...