12 | Indirizzi, riferimenti e puntatori
Capitolo 12 · Teoria, esempio ragionato e verifica.
Prima di iniziare: completa il capitolo 11.
Concetti e definizioni
Un puntatore contiene l’indirizzo di un oggetto oppure nullptr. & ottiene un indirizzo; * accede all’oggetto puntato. Un riferimento è un alias inizializzato a un oggetto. L’oggetto deve essere ancora vivo quando lo usi: un indirizzo non ne prolunga la durata. Per le normali sequenze preferisci vector alla gestione manuale di new e delete.
Esempio completo
Salva come esempio.cpp. Compila con g++ -std=c++17 -Wall -Wextra esempio.cpp -o esempio; esegui ./esempio (PowerShell: .\esempio.exe).
#include <iostream>
int main() {
int x = 10;
int* p = &x;
if (p != nullptr) *p = 20;
int& alias = x;
alias += 1;
std::cout << x;
}Segui l’esecuzione
Ottieni 21: p e alias permettono di accedere allo stesso x. Non dereferenziare nullptr o indirizzi di variabili locali già distrutte.
Prova tu
Scrivi void incrementa(int& n) e verifica la modifica nel chiamante.
Casi di prova e criteri di riuscita
n=4 → 5; n=-1 → 0. Spiega perché un parametro int n non modifica l’originale.
Prima di proseguire
Descrivi a parole l’algoritmo, esegui i casi di prova e spiega almeno un possibile errore. Poi passa agli esercizi del capitolo 12.