Heim >Backend-Entwicklung >C++ >Reicht „if (pointer)' aus, um die Zeigergültigkeit in C zu überprüfen?

Reicht „if (pointer)' aus, um die Zeigergültigkeit in C zu überprüfen?

DDD
DDDOriginal
2024-11-05 07:12:02573Durchsuche

Is `if (pointer)` Enough to Check Pointer Validity in C  ?

Zeigerwerte prüfen: if (pointer) vs if (pointer != NULL)

Bei der Arbeit mit Zeigern in C ist dies von entscheidender Bedeutung um ihre Gültigkeit festzustellen. Können Sie einfach den Ausdruck if (pointer) verwenden, um zu testen, ob ein Zeiger ungleich NULL ist? Oder müssen Sie if (pointer != NULL) explizit schreiben?

Antwort:

Der C-Standard erlaubt Ihnen, if (pointer) zum Testen auf Zeiger zu verwenden Gültigkeit. Nicht-Null-Zeiger werden implizit in „true“ konvertiert, während der Nullzeiger in „false“ konvertiert wird. Dieses Verhalten ist im Abschnitt über boolesche Konvertierungen des C 11-Standards definiert:

<code class="cpp">A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a
prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to
false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of
type bool; the resulting value is false.</code>

Daher können Sie sicher if (Zeiger) schreiben, um zu überprüfen, ob ein Zeiger ungleich NULL ist. Aus Gründen der Klarheit und Konsistenz wird jedoch empfohlen, je nach Bedarf die explizite if (Zeiger != NULL)- oder if (Zeiger)-Konstruktion zu verwenden.

Das obige ist der detaillierte Inhalt vonReicht „if (pointer)' aus, um die Zeigergültigkeit in C zu überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn