NULL mutató:
A null(0) egészértékű konstansnak a használatától függően különböző jelentése van. Minden esetben egy 0 értékű egészértékű konstansról van szó, csak másképp írják le.
Ha bármelyik mutatót 0-val hasonlítjuk össze, akkor ezzel ellenőrizzük, hogy az adott mutató null mutató-e. Ezt a 0-t ekkor null mutató konstansnak nevezzük. A C szabvány definiálja, hogy a 0 a (void *)-ra való tipizálása mind nullmutató, mind nullmutató konstans.
A NULL makró az “stddef.h” fejlécfájlban található.
Az alábbiakban a NULL mutató ellenőrzésének módjait ismertetjük:
- A NULL úgy van definiálva, hogy a null mutatóval való egyenlőséget a következőképpen hasonlítja össze:
if(pointer == NULL)
- Az alábbi if utasítás implicit módon ellenőrzi, hogy “nem 0”, ezért ezt megfordítjuk, hogy “0” legyen, mint:
if(!pointer)
Null Characters(‘\0’):
‘\0’ úgy van definiálva, hogy null karakter. Ez egy olyan karakter, amelynek minden bitje nullára van állítva. Ennek semmi köze a mutatókhoz. Az ‘\0’ (mint minden karakterliterál) egy egészértékű konstans, amelynek értéke nulla.
- Az alábbi utasítás ellenőrzi, hogy a karakterláncmutató null karakterre mutat.
if (!*string_pointer)
- Az alábbi utasítás ellenőrzi, hogy a string mutató nem null karakterre mutat-e.
if (*string_pointer)
A C nyelven a string nem más, mint egy char típusú tömb. Minden egyes karaktert egy 1 byte-os memóriaterületen tárol. Minden tömböt ‘\0’ vagy null karakterrel zárunk le, de ha egy ‘0’-t tárolunk egy karakterlánc belsejében, akkor a C nyelv szerint mindkettő nem ugyanaz. A ‘0’ az ASCII táblázat szerint 48-at jelent, míg a ‘\0’ az ASCII táblázat szerint 0-t jelent.
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