C ++ Null Pointer
Al momento della dichiarazione delle variabili, se non può essere assegnato l'indirizzo esatto, assegnare un valore NULL per la variabile puntatore è una buona pratica di programmazione. Fu valore NULL pointer è chiamato un puntatorenullo.
Un puntatore NULL è definita nella libreria standard zero costanti. Si consideri il seguente programma:
#include <iostream> using namespace std; int main () { int *ptr = NULL; cout << "ptr 的值是 " << ptr ; return 0; }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
ptr 的值是 0
Nella maggior parte dei sistemi operativi, il programma non consente l'accesso a indirizzo di memoria 0, perché la memoria è riservata per il sistema operativo. Tuttavia, l'indirizzo di memoria 0 ha un significato speciale, indica che il puntatore non punta a una posizione di memoria accessibile. Ma secondo la convenzione, se il puntatore contiene un valore nullo (valore zero), si presume che non punta a nulla.
Per verificare la presenza di un puntatore nullo, è possibile utilizzare l'istruzione if, come segue:
if(ptr) /* 如果 p 非空,则完成 */ if(!ptr) /* 如果 p 为空,则完成 */
Pertanto, se tutti i puntatori inutilizzati viene assegnato un valore nullo, evitando l'uso di un puntatore nullo, è possibile impedire l'uso improprio di un puntatore non inizializzato. In molti casi, le variabili non inizializzate ci sono un certo valore spazzatura, causa il programma difficile da debug.