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> intmain() { printf("\\0 is %d\n", '\0'); printf("0 is %d\n", '0'); return0; } \0 is 00 is 48