Quali sono i puntatori e come vengono utilizzati?

April 28

Quali sono i puntatori e come vengono utilizzati?


Donald Knuth, attualmente professore emerito di "The Art of Computer Programming" presso la Stanford University, ha detto nel 1974 che egli considerava le variabili puntatore "per essere tra i tesori più preziosi della scienza del computer." Eppure, più di tre decenni dopo, i puntatori sono ancora fonte di confusione per molti programmatori inizio. Inoltre, i programmatori spesso usano puntatori in modo non corretto, in modo da codice non funziona come previsto e la questione diventa ancora più nebuloso e confuso.

Un puntatore è per gli indirizzi

I puntatori sono variabili che contengono l'indirizzo di un'altra variabile, così essi "punto" per l'altra variabile. I programmatori sono normalmente bene con l'idea di variabili - per esempio, una variabile "x" contenente il valore di 25. Un puntatore a "x" sta a significare dove il valore di 25 è effettivamente memorizzato. Stampa il contenuto di una variabile puntatore visualizzerà un indirizzo di memoria, tradizionalmente stampati in esadecimale. Stampa dei contenuti di "x" visualizzerebbe 25. L'indirizzo di una variabile non è molto diverso dal concetto di una lettera con un indirizzo postale stampata sulla busta. L'indirizzo dice al postino dove consegnare la busta. Il contenuto della busta sono separati dal indirizzo. L'indirizzo di una variabile è dove in memoria il contenuto di una variabile sono memorizzati.

Dichiarazione

La dichiarazione di un puntatore è specifico per il linguaggio di programmazione. Per esempio, l'istruzione "galleggiare y = 25.5, * pointer_to_y = & y;" dichiara e inizializza un punto variabile "y" galleggiante e una variabile puntatore. Stampa del valore di "y" produrrebbe 25,5, durante la stampa il valore di "pointer_to_y" produrrebbe dove "y" è memorizzato nella memoria.

L'utilizzo di puntatori

Un posto importante per i puntatori è in ingresso. Quando si chiede all'utente di inserire un numero, è necessario memorizzare il numero da qualche parte. A dire la vostra funzione di ingresso dove memorizzare il valore, è necessario dare l'indirizzo di una variabile, che sarebbe "& number_of_students" in C. Se basta specifica "number_of_students," si sta parlando il valore corrente memorizzato nella variabile, come il contenuto della busta menzionato prima, piuttosto che dove memorizzare input dell'utente.

funzioni

È inefficiente passare grandi quantità di dati di funzioni. I puntatori consentono di passare in cui i dati sono memorizzati che la funzione ha bisogno. La funzione può accedere ai dati necessari senza il sovraccarico di trasmettere i dati alla routine.

Complesse strutture dati

problemi di programmazione avanzate richiedono soluzioni di programmazione e tipi di dati avanzati. I programmatori non possono facilmente risolvere tutti i problemi con la semplice intero, in virgola mobile e tipi di dati carattere. I programmatori usano liste collegate spesso in programmi, in particolare quando l'ordinamento serie complesse di dati. Una lista collegata è semplicemente una raccolta di dati, come il nome di un dipendente, ID e pagare rate, memorizzati in una struttura dati. Oltre ai dati del dipendente, ciascuna struttura di dati contiene un puntatore alla prossima struttura dati nell'elenco. Riorganizzare record dei dipendenti è una questione di riordinare i puntatori, piuttosto che dover spostare grandi quantità di dati in giro per riordinare semplicemente un elenco.