Menu
Coddy logo textTech

Puntatori nulli

Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 4 di 56.

Quando dichiari un puntatore, non punta automaticamente a nulla di significativo. Un puntatore non inizializzato contiene indirizzi di memoria casuali, che possono causare errori gravi se provi a usarlo. È qui che i puntatori null diventano essenziali per una programmazione sicura.

Un puntatore nullo è un puntatore che punta esplicitamente a nulla. In C++ moderno, crei un puntatore nullo inizializzandolo con nullptr:

int* ptr = nullptr;  // ptr è ora un puntatore nullo

La parola chiave nullptr indica che il puntatore non punta ad alcuna posizione di memoria valida. Questo è molto più sicuro che lasciare un puntatore non inizializzato, perché puoi verificare se un puntatore è null prima di tentare di dereferenziarlo.

Prima di usare un puntatore, dovresti verificare che non sia null usando una semplice istruzione if:

if (ptr != nullptr) {
    // È sicuro usare *ptr qui
    int value = *ptr;
}

Questa pratica impedisce al tuo programma di arrestarsi in modo anomalo a causa dell’accesso a posizioni di memoria non valide. Inizializza sempre i puntatori a nullptr quando li dichiari e verifica che non siano null prima di dereferenziarli.

challenge icon

Sfida

Facile

Crea un programma che dimostri l'uso sicuro dei puntatori controllando che non siano nulli prima di dereferenziarli.

Verrà fornito il seguente input:

  • Una stringa che sarà "valid" oppure "null"

Il tuo programma dovrebbe:

  1. Dichiarare una variabile intera denominata data e inizializzarla con il valore 42
  2. Dichiarare un puntatore denominato ptr
  3. Se l'input è "valid", assegnare l'indirizzo di data a ptr
  4. Se l'input è "null", assegnare nullptr a ptr
  5. Usare un'istruzione if per controllare che ptr non sia nullo prima di tentare di usarlo
  6. Se il puntatore non è nullo, stampare il valore a cui punta
  7. Se il puntatore è nullo, stampare un messaggio di sicurezza

Usa il seguente formato di output esatto:

Value: [value]

Per i puntatori nulli, usa questo formato:

Pointer is null - cannot dereference

Provalo tu

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Leggi input
    string input;
    cin >> input;
    
    // Dichiara la variabile data
    int data = 42;
    
    // TODO: Scrivi qui il tuo codice
    // - Dichiara un puntatore chiamato ptr
    // - Controlla input e assegna il valore appropriato a ptr
    // - Usa un'istruzione if per controllare e usare il puntatore in modo sicuro
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online