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.