Dereferenziazione e aritmetica dei puntatori
Legga la memoria tramite puntatori e percorra gli array con l'aritmetica dei puntatori
Dereferenziazione e aritmetica dei puntatori è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.
Lettura tramite un puntatore
L'operatore unario * legge il valore a cui punta il puntatore.
int x = 42;
int* p = &x;
std::cout << *p; // 42Scrittura tramite un puntatore
È anche possibile usare *p a sinistra di un'assegnazione per scrivere nel valore puntato.
*p = 100;
std::cout << x; // 100L'operatore freccia
Per i puntatori a struct o classi, p->member è una forma abbreviata di (*p).member. Usi la freccia: è la convenzione.
struct Point { int x, y; };
Point pt{3, 4};
Point* p = &pt;
std::cout << p->x; // 3Nozioni di base sull'aritmetica dei puntatori
È possibile aggiungere o sottrarre numeri interi ai puntatori. Il risultato si sposta in passi della dimensione di un elemento, non di un byte.
int a[5] = {10, 20, 30, 40, 50};
int* p = a; // points to a[0]
p = p + 2; // now points to a[2]
std::cout << *p; // 30Scorrere un array
L'aritmetica dei puntatori simula l'indicizzazione. a[i] e *(a + i) sono identici, e p[i] funziona con qualsiasi puntatore.
int a[] = {1, 2, 3, 4};
int* p = a;
for (int i = 0; i < 4; ++i) {
std::cout << *(p + i) << " ";
}Differenza tra due puntatori
Sottrarre due puntatori all'interno dello stesso array restituisce la distanza in elementi; il tipo è std::ptrdiff_t.
int a[5];
int* first = a;
int* last = a + 5;
std::ptrdiff_t len = last - first; // 5Confrontare i puntatori
È possibile confrontare i puntatori per verificare l'uguaglianza con == e !=, e ordinarli con < solo quando puntano all'interno dello stesso array.
Iterazione con i puntatori
L'iterazione idiomatica in stile C usa due puntatori: uno all'inizio e uno alla fine.
int a[] = {1, 2, 3, 4, 5};
for (int* p = a; p != a + 5; ++p) {
std::cout << *p << " ";
}È consentito puntare oltre la fine
È possibile calcolare un puntatore alla posizione immediatamente successiva all'ultimo elemento (il puntatore "end"), ma dereferenziarlo produce un comportamento indefinito.
Insidie dell'aritmetica dei puntatori
Errori comuni:
- Superare i limiti dell'array
- Mescolare tipi di puntatore (
int*+char*) - Dimenticare che l'aritmetica usa unità di elementi, non di byte
Preferire iteratori o intervalli
Il C++ moderno privilegia gli iteratori e la libreria ranges rispetto all'aritmetica con puntatori grezzi. I puntatori restano importanti per le API C e per il codice di livello molto basso.
Verifica rapida
Se p è un int* che punta all'inizio di un int di 4 byte, a cosa punta p + 1?
Riepilogo
*p legge o scrive il valore puntato. p->member accede a un membro di una struct. L'aritmetica dei puntatori procede per passi della dimensione di un elemento. La usi con attenzione: nel codice moderno, iteratori e intervalli sono in genere una scelta più sicura.
Domande Frequenti
La lezione «Dereferenziazione e aritmetica dei puntatori» è gratuita?
Sì — il testo completo di «Dereferenziazione e aritmetica dei puntatori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.
Cosa imparerò in «Dereferenziazione e aritmetica dei puntatori»?
Legga la memoria tramite puntatori e percorra gli array con l'aritmetica dei puntatori Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C++ Academy?
Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Dereferenziazione e aritmetica dei puntatori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C++ Academy?
Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Puntatori grezzi e operatore address-of
- Dereferenziazione e aritmetica dei puntatori
- nullptr e sicurezza dei puntatori nulli
- Quando usare puntatori o riferimenti