Puntatori nulli C ++

È sempre buona norma assegnare il puntatore NULL a una variabile del puntatore nel caso non si abbia l'indirizzo esatto da assegnare. Questo viene fatto al momento della dichiarazione della variabile. Un puntatore a cui viene assegnato NULL è chiamato anull puntatore.

Il puntatore NULL è una costante con un valore zero definito in diverse librerie standard, incluso iostream. Considera il seguente programma:

#include <iostream>

using namespace std;
int main () {
   int  *ptr = NULL;
   cout << "The value of ptr is " << ptr ;
 
   return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

The value of ptr is 0

Nella maggior parte dei sistemi operativi, ai programmi non è consentito accedere alla memoria all'indirizzo 0 perché tale memoria è riservata dal sistema operativo. Tuttavia, l'indirizzo di memoria 0 ha un significato speciale; segnala che il puntatore non è destinato a puntare a una posizione di memoria accessibile. Ma per convenzione, se un puntatore contiene il valore null (zero), si presume che punti a nulla.

Per verificare la presenza di un puntatore nullo puoi usare un'istruzione if come segue:

if(ptr)     // succeeds if p is not null
if(!ptr)    // succeeds if p is null

Pertanto, se a tutti i puntatori inutilizzati viene assegnato il valore nullo e si evita l'uso di un puntatore nullo, è possibile evitare l'abuso accidentale di un puntatore non inizializzato. Molte volte, le variabili non inizializzate contengono alcuni valori spazzatura e diventa difficile eseguire il debug del programma.