I vantaggi dei puntatori

April 6

Il puntatore è una tecnica di programmazione che permette al programmatore di fare riferimento a una variabile con un riferimento memoria anziché alla variabile stessa. Ha vantaggi e svantaggi rispetto all'uso di assegnazioni di variabili dirette ed è un metodo di programmazione importante per il principiante al programmatore di intermedio.

Pointer Referencing

Quando si assegna una variabile in qualsiasi linguaggio di programmazione, una certa quantità di memoria di sistema viene messa da parte per contenere i propri dati. Per le variabili semplici, questa sarà solitamente una piccola quantità di memoria, ma per liste e array di lunghezza arbitraria, la quantità di memoria utilizzata può essere estremamente grande. Alcune funzioni e le operazioni eseguite su variabili comportino la necessità di copiare i dati in uno spazio di lavoro; quando le variabili operati sono grandi, la quantità di dati che deve essere copiata può rallentare il funzionamento del programma, o in situazioni di memoria limitate, causa il crash del programma.

Puntatori evitare questo problema con la creazione di posti segnalibro in memoria; operazioni vengono poi effettuate su posizioni di memoria, anziché i dati effettivi memorizzati nella variabile. Si consideri ad esempio un programma che carica diverse migliaia di record da un database in una variabile di matrice. Se si esegue un'operazione come "restituire il quinto record dalla matrice," in alcune lingue non ottimizzati questo duplicare l'intero elenco prima che il quinto record può essere trovato ed estratto. Un puntatore alla stessa posizione di memoria, tuttavia, può recuperare a questi dati senza causare l'intero array da duplicare internamente.

errori Pointer

Bisogna fare attenzione a comprendere le operazioni interne di un linguaggio di programmazione quando si assegnano le variabili. Si consideri il seguente pseudocodice:

a = 5
b = a
a = 10
stampa B

In alcune lingue, il "B = una" operazione assegnerà il valore della variabile "a" alla variabile "b". In questi casi, l'operazione "di stampa b" tornerà "5", che era il valore di "a" nel momento in cui è stato assegnato a "B". Tuttavia, in altre lingue, "b = a" crea un puntatore (o di riferimento) da "b" a "a", dando le stesse variabili due nomi diversi. In queste lingue, quando il valore di "a" viene modificato, il valore di "b" è anche cambiato, e il risultato di "stampa b" sarà "5."

Analogamente, quando un'assegnazione variabile è semplicemente un riferimento, gli errori possono essere introdotti come segue:

a = 5
b = a
eliminare un
stampa B

In questo caso, se "b" e "a" si riferiscono alla stessa variabile, quando la variabile a è cancellato, variabile "b" non esiste più; questo programma si concluderà con un errore di esecuzione.

Ogni lingua ha le sue regole per la gestione dei puntatori, riferimenti e locazioni di memoria variabili, in modo da tecniche apprese per una lingua devono essere regolate, in base all'ambiente di programmazione che si sta utilizzando.