Code: Alles auswählen
if(pointer)
{
... // Es ist KEIN NULL-Pointer
}
else
{
... // Es IST ein NULL-Pointer
}
Code: Alles auswählen
#define NULL 0L
Aber funktioniert das auch wirklich zu 100% in C zuverlässig? Denn in C kann NULL ja anscheinend auf dreierlei Arten definiert sein:
Code: Alles auswählen
#define NULL 0
#define NULL 0L
#define NULL (void*) 0
Und die zweite Frage in diesem Kontext:
Habe ich das richtig verstanden, dass wenn ich einer Funktion einen NULL-Pointer übergeben will, ich zuerst NULL in den richtigen Pointer-Typ casten muss (die Frage bezieht sich auch hier in erster Linie auf reines C)?
Code: Alles auswählen
void func(int* pointer); // Funktion nimmt einen int-Pointer entgegen, der auch NULL sein darf
func((int*)NULL); // Cast von NULL in den von "func" erwarteten Pointer-Typ