Korrekte Definition von NULL und NULL_POINTER?

8

Soweit ich weiß, definiert C NULL wie folgt:

%Vor%

Wie sollen wir dann NULL_POINTER definieren? Ich habe es in meinem Programm gleich definiert und es hat funktioniert, aber ich denke, das ist nur ein Zufall:

%Vor%

Was wäre die logische Definition, falls vorhanden?

    
Niklas Rosencrantz 13.09.2013, 08:18
quelle

2 Antworten

13
%Vor%

und

%Vor%

sind beide gültig. Wenn Sie ein eigenes Makro für Nullzeiger implementieren müssen, gilt die gleiche Regel.

  

C11 (ISO / IEC 9899: 201x) §6.3.2.3 Zeiger Abschnitt 3

     

Ein ganzzahliger Konstantenausdruck mit dem Wert 0 oder ein solcher Ausdruck, der in den Typ umgewandelt wird    void * , wird als Nullzeigerkonstante

bezeichnet
    
Yu Hao 13.09.2013, 08:20
quelle
4

Nur in Zeigerkontexten sind NULL und 0 gleichwertig. NULL sollte nicht verwendet werden, wenn eine andere Art von 0 benötigt wird, auch wenn es funktionieren könnte, da dies die falsche Stilmitteilung sendet. (Außerdem erlaubt ANSI die Definition von NULL als ((void *)0) , was in Nicht-Pointer-Kontexten überhaupt nicht funktioniert.) Verwenden Sie insbesondere nicht NULL , wenn das ASCII-Nullzeichen (NUL) gewünscht wird. Geben Sie Ihre eigene Definition an

%Vor%

NULL sollte nur als Zeigerkonstante verwendet werden.

    
Dayal rai 13.09.2013 08:27
quelle

Tags und Links