Wskaźnik NULL:
Stała całkowita zero(0) ma różne znaczenia w zależności od tego, jak jest używana. We wszystkich przypadkach jest to stała całkowita o wartości 0, jest po prostu opisana na różne sposoby.
Jeśli jakikolwiek wskaźnik jest porównywany do 0, to jest to sprawdzenie, czy wskaźnik jest wskaźnikiem zerowym. To 0 jest wtedy określane jako stała wskaźnika zerowego. Standard C definiuje, że 0 jest typecast to (void *) jest zarówno wskaźnikiem zerowym jak i stałą wskaźnika zerowego.
Makro NULL znajduje się w pliku nagłówkowym „stddef.h”.
Poniżej podano sposoby sprawdzania wskaźnika NULL:
- NULL jest zdefiniowany do porównania równego wskaźnikowi zerowemu jako:
if(pointer == NULL)
- Below if statement implicite sprawdza „is not 0”, więc odwracamy to, aby oznaczało „is 0” jako:
if(!pointer)
Null Characters(’\0′):
’\0′ jest zdefiniowane jako znak pusty. Jest to znak, którego wszystkie bity są ustawione na zero. Nie ma to nic wspólnego z wskaźnikami. '0′ jest (jak wszystkie literały znakowe) stałą całkowitą o wartości zero.
- Poniższa instrukcja sprawdza, czy wskaźnik łańcuchowy wskazuje na znak pusty.
if (!*string_pointer)
- Poniższa instrukcja sprawdza, czy wskaźnik łańcuchowy wskazuje na znak not-null.
if (*string_pointer)
W języku C łańcuch jest niczym innym jak tablicą typu char. Przechowuje ona każdy ze znaków w przestrzeni pamięci o wielkości 1 bajta. Każda tablica jest zakończona '0′ lub znakiem null, ale jeśli przechowujemy '0′ wewnątrz łańcucha, oba nie są takie same zgodnie z językiem C. '0′ oznacza 48 zgodnie z tabelą ASCII, natomiast '0′ oznacza 0 zgodnie z tabelą 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