Domanda

Vedi: Comprensione dei puntatori


In molte lingue aromatizzate in C e in alcune lingue meno recenti come Fortran, è possibile utilizzare Puntatori .

Come qualcuno che ha veramente programmato solo in basic, javascript e actionscript, puoi spiegarmi cos'è un puntatore e per cosa è più utile?

Grazie!

È stato utile?

Soluzione

I puntatori non sono così difficili come sembrano. Come altri hanno già detto, sono variabili che contengono l'indirizzo di qualche altra variabile. Supponiamo che volessi darti indicazioni per casa mia. Non ti darei una foto della mia casa o un modello in scala della mia casa; Ti darei solo l'indirizzo. Potresti dedurre tutto ciò di cui hai bisogno.

Allo stesso modo, molte lingue fanno la distinzione tra passare per valore e passare per riferimento. In sostanza significa che passerò un intero oggetto in giro ogni volta che devo fare riferimento ad esso? Oppure, darò semplicemente il suo indirizzo in modo che gli altri possano dedurre ciò di cui hanno bisogno?

La maggior parte delle lingue moderne nasconde questa complessità capendo quando i puntatori sono utili e ottimizzandola per te. Tuttavia, se sai cosa stai facendo, la gestione manuale del puntatore può ancora essere utile in alcune situazioni.

Altri suggerimenti

Questo wikipedia articolo ti fornirà informazioni dettagliate su cosa sia un puntatore:

  

In informatica, un puntatore è un tipo di dati del linguaggio di programmazione il cui valore si riferisce direttamente (o "punta a") un altro valore memorizzato altrove nella memoria del computer usando il suo indirizzo. Ottenere o richiedere il valore a cui fa riferimento un puntatore si chiama dereferenziare il puntatore. Un puntatore è una semplice implementazione del tipo di dati di riferimento generale (sebbene sia abbastanza diverso dalla funzione indicata come riferimento in C ++). I puntatori ai dati migliorano le prestazioni per operazioni ripetitive come l'attraversamento di strutture ad albero e di stringhe, mentre i puntatori a funzioni vengono utilizzati per metodi di associazione nella programmazione orientata agli oggetti e collegamenti runtime a librerie a collegamento dinamico (DLL).

Un puntatore è una variabile che contiene l'indirizzo di un'altra variabile. Ciò consente di fare riferimento a un'altra variabile indirettamente. Ad esempio, in C:

// x is an integer variable
int x = 5;
// xpointer is a variable that references (points to) integer variables
int *xpointer;
// We store the address (& operator) of x into xpointer.
xpointer = &x;
// We use the dereferencing operator (*) to say that we want to work with
// the variable that xpointer references
*xpointer = 7;
if (5 == x) {
    // Not true
} else if (7 == x) {
    // True since we used xpointer to modify x
}

Ci sono state diverse discussioni in SO su questo argomento. Puoi trovare informazioni sull'argomento con i link qui sotto. Ci sono molte altre discussioni SO pertinenti sull'argomento, ma penso che queste siano le più pertinenti. Cerca 'pointers [C ++]' nella finestra di ricerca (o 'pointers [c]') e otterrai anche maggiori informazioni.

In C ++ non riesco a cogliere puntatori e classi

Qual è la differenza tra i moderni "Riferimenti" e "puntatori" tradizionali?

Come già menzionato, un puntatore è una variabile che contiene l'indirizzo di un'altra variabile.

Viene utilizzato principalmente durante la creazione di nuovi oggetti (in fase di esecuzione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top