Diferența dintre pointer și array

Anonim

Pointer vs Array

Un pointer este un tip de date care deține o referință la o locație de memorie o variabilă a pointerului stochează o adresă a unei locații de memorie în care sunt stocate unele date.Array-urile sunt structura de date cea mai frecvent utilizată pentru a stoca o colecție de elemente.Cele mai multe limbi de programare oferă metode pentru a declara cu ușurință matrice și elemente de acces în matrice.

Ce este un pointer?

Un pointer este un tip de date care stochează o adresă a unei locații de memorie în care sunt stocate date. referință la o locație de memorie Accesarea datelor stocate în locația de memorie care este menționată de pointer se numește dereferencing. operațiunile repetitive cum ar fi traversarea copacilor / șirurilor, căutările de tabele etc., folosind indicii ar îmbunătăți performanța. Acest lucru se datorează faptului că dereferențialul și copierea indicatoarelor sunt mai ieftine decât copierea și accesarea de fapt a datelor indicate de indicatori. Un pointer nul este un indicator care nu indică nimic. În Java, accesarea unui pointer nul ar genera o excepție numită NullPointerException.

Ce este o matrice?

Afișată în figura 1, este o bucată de cod utilizată în mod obișnuit pentru a declara și a atribui valori unei matrice. Figura 2 prezintă modul în care ar arăta o matrice în memorie.

valorile int [5];

valori [0] = 100;

valori [1] = 101;

valori [2] = 102;

valori [3] = 103;

valori [4] = 104;

Figura 1: Cod pentru declararea și atribuirea valorilor unei matrice

100

101 102 103 104 3
4 Figura 2: Array stocat în memorie Codul de mai sus definește un maestru care poate stoca 5 întregi și sunt accesați folosind indicii 0 până la 4. O proprietate importantă a unei matrice este aceea că, întreaga matrice este alocată ca un singur bloc de memorie și fiecare element își are propriul spațiu în matrice. Odată ce o matrice este definită, dimensiunea acesteia este fixă. Deci, dacă nu sunteți sigur de dimensiunea matricei la momentul compilării, va trebui să definiți o matrice suficient de mare pentru a fi în partea sigură. Dar, de cele mai multe ori, vom folosi de fapt mai puține elemente decât am alocat. Deci, o cantitate considerabilă de memorie este de fapt pierdută. Pe de altă parte, dacă "matricea suficientă" nu este destul de mare, programul s-ar prăbuși. Care este diferența dintre Pointeri și Arrays? Un pointer este un tip de date care stochează o adresă a unei locații de memorie în care sunt stocate date, în timp ce Arrays reprezintă structura de date cea mai frecvent utilizată pentru stocarea unei colecții de elemente. În limbajul de programare C, indexarea matricei se face folosind aritmetic pointer (adică elementul i al arrayului x ar fi echivalent cu * (x + i)).Prin urmare, în C, setul de indicatori care indică un set de locații de memorie care sunt consecutivi, poate fi considerat ca o matrice. Mai mult decât atât, există o diferență în modul în care operatorul sizeof operează pe pointers și arrays. Atunci când se aplică la o matrice, operatorul sizeof va întoarce întreaga dimensiune a matricei, în timp ce atunci când este aplicat pe un pointer, va reveni doar la dimensiunea indicelui.