Vérification de la nullité du pointeur dans C/C
Dans une discussion de révision de code, un contributeur a préconisé l'utilisation de vérifications NULL explicites dans le format suivant :
<code class="c">int * some_ptr; if (some_ptr == NULL) { ... }</code>
au lieu de la vérification implicite :
<code class="c">int * some_ptr; if (some_ptr) { ... }</code>
Cela soulève la question de savoir quelle approche est préférée et pourquoi.
NULL explicite Comparaison
La comparaison explicite NULL est plus explicite dans son intention, indiquant clairement que le pointeur ne doit pas être NULL. Il protège également contre l'affectation accidentelle, car ce qui suit n'est pas valide :
<code class="c">if (some_ptr = NULL) { ... }</code>
Vérification NULL implicite
La vérification NULL implicite est plus concise et moins susceptible d'introduire des bogues. en raison d'erreurs d'affectation. Il repose sur le fait qu'une variable pointeur dans une instruction if est implicitement évaluée comme sa véracité (non NULL ou NULL).
Recommandation
En général, il est préférable d'utiliser la vérification NULL implicite pour les raisons suivantes :
Exception
Cependant, il existe des cas où la comparaison explicite NULL peut être plus approprié, par exemple lorsque :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!