C - if(pointer)
Verfasst: 18.09.2022, 19:04
Ich frage mich grad, ob es in reinem C wirklich zulässig ist, einen potentiellen Null-Pointer mit folgender Anweisung zu entsprechen:
In C++ müsste dies ja wirklich ausnahmslos funktionieren, da dort NULL nichts anderes ist, als das Makro: Jedenfalls laut der Quelle, die ich hier zuhand habe.
Aber funktioniert das auch wirklich zu 100% in C zuverlässig? Denn in C kann NULL ja anscheinend auf dreierlei Arten definiert sein:
Beim letzten der drei Fälle bin ich mir nicht mehr absolut sicher, ob das if statement vielleicht doch darauf anspringt, da das entsprechende Bitmuster nach dem cast zu void* nicht mehr an allen Stellen 0 ist.
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)?
Gruss, starcow
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