Pointer NULL:
La costante intera zero(0) ha diversi significati a seconda del suo utilizzo. In tutti i casi, è una costante intera con il valore 0, è solo descritta in modi diversi.
Se qualsiasi puntatore viene confrontato con 0, allora questo è un controllo per vedere se il puntatore è un puntatore nullo. Questo 0 è quindi indicato come una costante del puntatore nullo. Lo standard C definisce che 0 è typecast a (void *) è sia un puntatore nullo che una costante di puntatore nullo.
La macro NULL è fornita nel file header “stddef.h”.
Di seguito ci sono i modi per controllare un puntatore NULL:
- NULL è definito per confrontare un puntatore nullo come:
if(pointer == NULL)
- Di seguito l’istruzione if controlla implicitamente “non è 0”, quindi invertiamo il significato di “è 0” come:
if(!pointer)
Caratteri nulli(‘\0’):
‘\0’ è definito come un carattere nullo. È un carattere con tutti i bit impostati a zero. Questo non ha niente a che fare con i puntatori. ‘\0’ è (come tutti i letterali di carattere) una costante intera con il valore zero.
- La seguente dichiarazione controlla se il puntatore alla stringa sta puntando ad un carattere nullo.
if (!*string_pointer)
- L’istruzione seguente controlla se il puntatore alla stringa punta a un carattere non nullo.
if (*string_pointer)
Nel linguaggio C la stringa non è altro che un array di tipo char. Memorizza ogni carattere in uno spazio di memoria di 1 byte. Ogni array termina con ‘0’ o carattere nullo, ma se memorizziamo uno ‘0’ all’interno di una stringa entrambi non sono uguali secondo il linguaggio C. ‘0’ significa 48 secondo la tabella ASCII mentre ‘\0’ significa 0 secondo la tabella ASCII.
Below is the C program to print the value of ‘\0’ and ‘0’:
#include <stdio.h>
int
main()
{
printf
(
"\\0 is %d\n"
,
'\0'
);
printf
(
"0 is %d\n"
,
'0'
);
return
0;
}
\0 is 00 is 48