Differenza tra puntatore e array

Anonim

Pointer vs Array

Un puntatore è un tipo di dati che detiene un riferimento a una posizione di memoria una variabile del puntatore memorizza un indirizzo di una posizione di memoria in cui vengono archiviati alcuni dati.) Gli array sono la struttura dei dati più diffusa per memorizzare una raccolta di elementi.

Che cos'è un puntatore?

Un puntatore è un tipo di dati che memorizza un indirizzo di una posizione di memoria in cui vengono memorizzati alcuni dati. il riferimento a una posizione di memoria. L'accesso ai dati memorizzati nella posizione di memoria indicata dal puntatore viene chiamato dereferencing. le operazioni ripetitive come il traverso di alberi / stringhe, la ricerca di tabelle, ecc., utilizzando i puntatori migliorerebbero le prestazioni. Ciò è dovuto al fatto che i puntatori di dereferencing e di copia sono meno costosi di copiare e accedere ai dati indicati dai puntatori. Un puntatore nullo è un puntatore che non indica nulla. In Java, l'accesso a un puntatore null genererebbe un'eccezione denominata NullPointerException.

Che cos'è un Array?

Mostrato in figura 1, è un pezzo di codice tipicamente utilizzato per dichiarare e assegnare i valori a una matrice. La Figura 2 illustra come una matrice sarebbe simile alla memoria.

valori int [5];

valori [0] = 100;

valori [1] = 101;

valori [2] = 102;

valori [3] = 103;

valori [4] = 104;

Figura 1: Codice per dichiarare e assegnare i valori ad un array

100

101 102 103 104 Indice: 0
1 2 < 3 4 Figura 2: Array immagazzinato nella memoria Il codice sopra definisce un array che può memorizzare 5 interi e si accede utilizzando gli indici da 0 a 4. Una proprietà importante di un array è che, l'intero array viene assegnato come un singolo blocco di memoria e ogni elemento ottiene il proprio spazio nell'array. Una volta definita un'array, la sua dimensione è fissa. Quindi, se non siete sicuri circa la dimensione dell'array al tempo di compilazione, dovresti definire una matrice abbastanza grande da essere in sicurezza. Ma, la maggior parte delle volte, stiamo usando meno numero di elementi di quanto abbiamo assegnato. Così una notevole quantità di memoria è in realtà sprecata. D'altra parte, se la "matrice abbastanza grande" non è in realtà abbastanza grande, il programma si bloccherà.

Qual è la differenza tra Pointers e Array?

Un puntatore è un tipo di dati che memorizza un indirizzo di una posizione di memoria in cui vengono memorizzati alcuni dati, mentre gli array sono la struttura dei dati più diffusa per memorizzare una raccolta di elementi. Nel linguaggio di programmazione C, l'indice di matrice viene eseguito utilizzando l'aritmetica del puntatore (cioè l'elemento ith dell'array x sarebbe equivalente a * (x + i)).Pertanto in C, insieme di puntatori che indicano un insieme di posizioni di memoria che sono consecutive, può essere considerato come un array. Inoltre, c'è una differenza in come l'operatore sizeof opera su puntatori e array. Quando applicato ad una matrice, l'operatore sizeof restituirà l'intera dimensione dell'array, mentre quando applicato a un puntatore, restituirà solo la dimensione del puntatore.