Diferența dintre pointer și matrice

Diferența dintre pointer și matrice
Diferența dintre pointer și matrice

Video: Diferența dintre pointer și matrice

Video: Diferența dintre pointer și matrice
Video: What Are DLLs? 2024, Iulie
Anonim

Pointer vs Array

Un pointer este un tip de date care deține o referință la o locație de memorie (adică o variabilă pointer stochează o adresă a unei locații de memorie în care sunt stocate unele date). Matricele sunt structura de date cel mai frecvent utilizată pentru a stoca o colecție de elemente. Majoritatea limbajelor de programare oferă metode pentru a declara cu ușurință matrice și a accesa elementele din 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 anumite date. Cu alte cuvinte, un pointer deține o referință la o locație de memorie. Accesarea datelor stocate în locația de memorie care este referită de indicator se numește dereferencing. Când efectuați operații repetitive, cum ar fi traversarea arborilor/șirurilor de caractere, căutări în tabele etc., utilizarea pointerilor ar îmbunătăți performanța. Acest lucru se datorează faptului că dereferențiarea și copierea pointerilor este mai ieftină decât copierea și accesarea efectivă a datelor indicate de pointeri. Un pointer nul este un pointer 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 folosită de obicei pentru a declara și a atribui valori unui tablou. Figura 2 ilustrează cum ar arăta o matrice în memorie.

int valori[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
Index: 0 1 2 3 4

Figura 2: Matrice stocată în memorie

Codul de mai sus definește o matrice care poate stoca 5 numere întregi și acestea sunt accesate folosind indici de la 0 la 4. O proprietate importantă a unei matrice este că, întreaga matrice este alocată ca un singur bloc de memorie și fiecare element își primește propriul spațiu în matrice. Odată ce o matrice este definită, dimensiunea sa este fixă. Deci, dacă nu sunteți sigur de dimensiunea matricei în momentul compilării, ar trebui să definiți o matrice suficient de mare pentru a fi în partea de siguranță. Dar, de cele mai multe ori, vom folosi de fapt un număr mai mic de elemente decât am alocat. Deci, o cantitate considerabilă de memorie este de fapt irosită. Pe de altă parte, dacă „matricea suficient de mare” nu este de fapt suficient de mare, programul se va prăbuși.

Care este diferența dintre pointeri și matrice?

Un pointer este un tip de date care stochează o adresă a unei locații de memorie în care sunt stocate unele date, în timp ce tablourile sunt structura de date cel mai frecvent utilizată pentru a stoca o colecție de elemente. În limbajul de programare C, indexarea matricei se face folosind aritmetica pointerului (adică al i-lea element al matricei x ar fi echivalent cu (x+i)). Prin urmare, în C, setul de pointeri care indică un set de locații de memorie care sunt consecutive, poate fi gândit ca o matrice. Mai mult, există o diferență în modul în care operatorul sizeof operează pe pointeri și matrice. Când este aplicat unei matrice, operatorul sizeof va returna întreaga dimensiune a matricei, în timp ce atunci când este aplicat unui pointer, va returna doar dimensiunea indicatorului.

Recomandat: