Maison  >  Article  >  développement back-end  >  Est-ce que `if (pointeur)` est équivalent à `if (pointeur != NULL)` en C ?

Est-ce que `if (pointeur)` est équivalent à `if (pointeur != NULL)` en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 20:37:29137parcourir

Is `if (pointer)` Equivalent to `if (pointer != NULL)` in C  ?

Est-ce que if (pointeur) est équivalent à if (pointeur != NULL) ?

En programmation C, il est courant de vérifier si un le pointeur n’est pas NULL pour garantir qu’il pointe vers un emplacement mémoire valide. Traditionnellement, cela est réalisé avec la condition if (pointer != NULL). Cependant, il existe une syntaxe alternative potentielle : if (pointer).

Est-il sûr d'utiliser if (pointer) ?

Oui, if (pointer) est un valide syntaxe et équivalent à if (pointeur != NULL). La raison réside dans les règles de conversion implicites de C.

Conversions booléennes implicites

Selon la norme C 11 sur les conversions booléennes :

"A La valeur pr d'une énumération arithmétique, sans portée, d'un pointeur ou d'un pointeur vers un type de membre peut être convertie en une valeur prvalue de type bool. Une valeur nulle, une valeur de pointeur nulle ou une valeur de pointeur de membre nulle est convertie en false ; toute autre valeur est convertie en true ; "

En d'autres termes, lorsqu'une valeur de pointeur est utilisée dans un contexte booléen, le compilateur la contraint implicitement à une valeur booléenne. Un pointeur nul est traité comme faux, tandis que toutes les autres valeurs de pointeur sont traitées comme vraies.

Exemple pratique

Considérez le code suivant :

<code class="cpp">int* p = nullptr;
if (p) {
  // Do something
} else {
  // Do something else
}</code>

Dans cet exemple, la condition if (p) est valide car le pointeur nul p est implicitement converti en faux. Si p pointait vers un emplacement mémoire valide, la condition serait évaluée comme vraie.

Conclusion

Bien qu'il soit techniquement correct d'utiliser if (pointeur) au lieu de if ( pointer != NULL), cette dernière est plus explicite et recommandée pour des raisons de clarté et de lisibilité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn