Zeiger-Nullitätsüberprüfung in C/C
In einer Codeüberprüfungsdiskussion hat sich ein Mitwirkender für die Verwendung expliziter NULL-Prüfungen im C/C ausgesprochen folgendes Format:
<code class="c">int * some_ptr; if (some_ptr == NULL) { ... }</code>
anstelle der impliziten Prüfung:
<code class="c">int * some_ptr; if (some_ptr) { ... }</code>
Da stellt sich die Frage, welcher Ansatz bevorzugt wird und warum.
Explizite NULL Vergleich
Der explizite NULL-Vergleich ist in seiner Absicht expliziter und besagt eindeutig, dass der Zeiger nicht NULL sein darf. Es schützt auch vor versehentlicher Zuweisung, da Folgendes ungültig ist:
<code class="c">if (some_ptr = NULL) { ... }</code>
Implizite NULL-Prüfung
Die implizite NULL-Prüfung ist prägnanter und führt weniger wahrscheinlich zu Fehlern aufgrund von Zuordnungsfehlern. Es beruht auf der Tatsache, dass eine Zeigervariable in einer if-Anweisung implizit auf ihre Wahrhaftigkeit (nicht NULL oder NULL) ausgewertet wird.
Empfehlung
Im Allgemeinen ist es Aus folgenden Gründen ist es vorzuziehen, die implizite NULL-Prüfung zu verwenden:
Ausnahme
Es gibt jedoch Fälle, in denen der explizite NULL-Vergleich möglich ist angemessener sein, beispielsweise wenn:
Das obige ist der detaillierte Inhalt vonExplizite vs. implizite NULL-Prüfungen in C/C: Welcher Ansatz ist besser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!