Puntero NULL :
La constante entera cero ( 0 ) tiene diferentes significados dependiendo de su uso. En todos los casos, es una constante entera con el valor 0, solo se describe de diferentes maneras.
Si algún puntero se compara con 0 , esta es una verificación para ver si el puntero es un puntero nulo. Este 0 se denomina constante de puntero nulo. El estándar C define que 0 se encasilla en (void *) es tanto un puntero nulo como una constante de puntero nulo.
La macro NULL se proporciona en el archivo de encabezado «stddef.h» .
A continuación se muestran las formas de verificar un puntero NULL:
- NULL se define para comparar igual a un puntero nulo como:
if(pointer == NULL)
- A continuación, la declaración if verifica implícitamente «no es 0» , por lo que invertimos eso para que signifique «es 0» como:
if(!pointer)
Caracteres nulos ( ‘\0’ ):
‘\0’ se define como un carácter nulo. Es un carácter con todos los bits puestos a cero. Esto no tiene nada que ver con punteros. ‘\0’ es (como todos los caracteres literales) una constante entera con el valor cero.
- La siguiente declaración verifica si el puntero de la string apunta a un carácter nulo.
if (!*string_pointer)
- La siguiente declaración verifica si el puntero de la string apunta a un carácter no nulo.
if (*string_pointer)
En el lenguaje C, la string no es más que una array de tipo char. Almacena cada uno de los caracteres en un espacio de memoria de 1 byte. Cada array termina con ‘\0’ o un carácter nulo, pero si almacenamos un ‘0’ dentro de una string, ambos no son iguales según el lenguaje C. ‘0’ significa 48 según la tabla ASCII mientras que ‘\0’ significa 0 según la tabla ASCII .
A continuación se muestra el programa C para imprimir el valor de ‘\0’ y ‘0’:
// C program to print the value of // '\0' and '0' #include <stdio.h> // Driver Code int main() { // Print the value of // '\0' and '0' printf("\\0 is %d\n", '\0'); printf("0 is %d\n", '0'); return 0; }
\0 is 0 0 is 48