C++ Academy · Lezione

Puntatori grezzi e operatore address-of

Dichiari i puntatori, ottenga gli indirizzi con & e comprenda i tipi puntatore

Lezione 1 di 413 passaggi

Puntatori grezzi e operatore address-of è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 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.

Che cos'è un puntatore?

Un puntatore contiene l'indirizzo di un altro oggetto. È una variabile il cui valore è una posizione di memoria.

Dichiarare un puntatore

Il tipo puntatore è T*. Per convenzione, si colloca * accanto al tipo.

int x = 10;
int* p = &x;          // p holds the address of x
std::cout << p;        // prints an address
std::cout << *p;       // prints 10

L'operatore di indirizzo

L'operatore unario & restituisce l'indirizzo di una variabile. Il tipo del risultato è T*.

int x = 42;
int* p = &x;

L'operatore di dereferenziazione

L'operatore unario * legge o scrive l'oggetto a cui punta un puntatore.

*p = 100;
std::cout << x;   // 100  (x changed through p)

Puntatori null

Un puntatore che non punta a nulla dovrebbe essere impostato su nullptr. Dereferenziarlo produce un comportamento non definito.

int* p = nullptr;
if (p == nullptr) {
    std::cout << "no target\n";
}

In fondo, i puntatori sono numeri

Un indirizzo è semplicemente un intero, spesso di 64 bit. Il tipo del puntatore indica al compilatore come interpretare i byte presenti a quell'indirizzo.

Puntatore a const e puntatore const

Esistono due posizioni indipendenti per const:

int x = 1, y = 2;
const int* p1 = &x;     // pointer to const int (cannot modify *p1)
int* const p2 = &x;     // const pointer to int (cannot reseat)
const int* const p3 = &x; // both

Dimensione dei puntatori

Tutti i puntatori hanno la stessa dimensione su una determinata piattaforma — in genere 8 byte nei sistemi a 64 bit. Anche un char* occupa 64 bit.

Puntatori a funzioni

È possibile ottenere l'indirizzo di una funzione e chiamarla tramite il puntatore.

int square(int x) { return x * x; }

int (*fp)(int) = &square;
std::cout << fp(5);   // 25

Puntatori a membri

Esiste una sintassi speciale per i puntatori ai membri delle classi. È rara nel codice moderno: per la maggior parte dei callback si usano std::function o le lambda.

Perché i puntatori sono importanti

I puntatori sono alla base di:

  • Memoria dinamica (new/delete o puntatori intelligenti)
  • Riferimenti opzionali (nullable)
  • Polimorfismo (dispatch virtuale tramite puntatori alla classe base)
  • Interoperabilità con le API C

Verifica rapida

A cosa corrisponde il risultato dell'espressione &x?

Riepilogo

Un puntatore contiene un indirizzo. Usi & per ottenere un indirizzo e * per leggere o scrivere il valore puntato. nullptr è il valore nullo sicuro. I puntatori sono alla base della memoria dinamica, dei riferimenti opzionali e del polimorfismo.

Gratis per iniziare

Impara C++ con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
51
Lezioni
203

Domande Frequenti

La lezione «Puntatori grezzi e operatore address-of» è gratuita?

Sì — il testo completo di «Puntatori grezzi e operatore address-of» è 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 «Puntatori grezzi e operatore address-of»?

Dichiari i puntatori, ottenga gli indirizzi con & e comprenda i tipi puntatore 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 1 di 4.

Quanto tempo richiede la lezione «Puntatori grezzi e operatore address-of»?

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

  1. Puntatori grezzi e operatore address-of
  2. Dereferenziazione e aritmetica dei puntatori
  3. nullptr e sicurezza dei puntatori nulli
  4. Quando usare puntatori o riferimenti
← Torna a C++ Academy