Differenza tra puntatore e array

Differenza tra puntatore e array
Differenza tra puntatore e array

Video: Differenza tra puntatore e array

Video: Differenza tra puntatore e array
Video: Compilatori ed interpreti 2024, Luglio
Anonim

Puntatore vs Array

Un puntatore è un tipo di dati che contiene un riferimento a una posizione di memoria (cioè una variabile puntatore memorizza un indirizzo di una posizione di memoria in cui sono memorizzati alcuni dati). Gli array sono la struttura dati più comunemente utilizzata per memorizzare una raccolta di elementi. La maggior parte dei linguaggi di programmazione fornisce metodi per dichiarare facilmente gli array e accedere agli elementi negli array.

Cos'è un puntatore?

Un puntatore è un tipo di dati che memorizza un indirizzo di una posizione di memoria in cui sono memorizzati alcuni dati. In altre parole, un puntatore contiene un riferimento a una posizione di memoria. L'accesso ai dati archiviati nella posizione di memoria a cui fa riferimento il puntatore è chiamato dereferenziazione. Quando si eseguono operazioni ripetitive come l'attraversamento di alberi/stringhe, ricerche di tabelle e così via, l'utilizzo di puntatori migliorerebbe le prestazioni. Questo perché dereferenziare e copiare i puntatori è più economico che copiare e accedere effettivamente ai dati puntati dai puntatori. Un puntatore nullo è un puntatore che non punta a nulla. In Java, l'accesso a un puntatore nullo genererebbe un'eccezione chiamata NullPointerException.

Cos'è un array?

Mostrato nella figura 1, è un pezzo di codice tipicamente utilizzato per dichiarare e assegnare valori a un array. La figura 2 mostra come apparirà un array nella memoria.

int values[5];

valori[0]=100;

valori[1]=101;

valori[2]=102;

valori[3]=103;

valori[4]=104;

Figura 1: codice per la dichiarazione e l'assegnazione di valori a un array

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

Figura 2: Array memorizzato

Il codice sopra definisce un array che può memorizzare 5 numeri interi a cui si accede utilizzando gli indici da 0 a 4. Una proprietà importante di un array è che l'intero array viene allocato come un singolo blocco di memoria e ogni elemento ottiene il suo proprio spazio nell'array. Una volta definita una matrice, la sua dimensione viene fissata. Quindi, se non sei sicuro della dimensione dell'array in fase di compilazione, dovresti definire un array sufficientemente grande per essere al sicuro. Ma, la maggior parte delle volte, utilizzeremo effettivamente un numero di elementi inferiore a quello che abbiamo allocato. Quindi una notevole quantità di memoria viene effettivamente sprecata. D' altra parte, se "array abbastanza grande" non è effettivamente abbastanza grande, il programma andrebbe in crash.

Qual è la differenza tra puntatori e array?

Un puntatore è un tipo di dati che memorizza un indirizzo di una posizione di memoria in cui sono archiviati alcuni dati, mentre gli array sono la struttura dati più comunemente utilizzata per memorizzare una raccolta di elementi. Nel linguaggio di programmazione C, l'indicizzazione dell'array viene eseguita utilizzando l'aritmetica del puntatore (cioè l'i-esimo elemento dell'array x sarebbe equivalente a (x+i)). Pertanto, in C, l'insieme di puntatori che puntano a un insieme di locazioni di memoria consecutive può essere considerato come un array. Inoltre, c'è una differenza nel modo in cui l'operatore sizeof opera su puntatori e array. Quando applicato a un array, l'operatore sizeof restituirà l'intera dimensione dell'array, mentre quando applicato a un puntatore, restituirà solo la dimensione del puntatore.

Consigliato: