Maison  >  Article  >  développement back-end  >  Devriez-vous vérifier explicitement les pointeurs NULL dans C/C ?

Devriez-vous vérifier explicitement les pointeurs NULL dans C/C ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 02:03:29118parcourir

Should You Explicitly Check for NULL Pointers in C/C  ?

Vérification des pointeurs NULL en C/C : comparaison des méthodes

Dans les revues de code, le sujet de la vérification des pointeurs NULL revient souvent. Un contributeur préconise l'utilisation de comparaisons explicites avec NULL :

int * some_ptr;
// ...
if (some_ptr == NULL)
{
    // Handle null-pointer error
}
else
{
    // Proceed
}

Une autre partie estime que la vérification implicite de NULL en utilisant la variable pointeur dans une instruction if est tout aussi claire :

int * some_ptr;
// ...
if (some_ptr)
{
    // Proceed
}
else
{
    // Handle null-pointer error
}

Ceci cette dernière méthode est préférée pour plusieurs raisons. Premièrement, il évite le risque d'introduire des erreurs logiques telles que l'attribution de NULL à la variable pointeur au lieu de la comparer :

if (some_ptr = NULL)

Deuxièmement, il est compatible avec les classes C comme unique_ptr, shared_ptr et auto_ptr qui agissent comme pointeurs mais fournissent des conversions en booléen. Une comparaison explicite avec NULL nécessiterait une conversion en pointeur, ce qui peut avoir des effets secondaires ou être moins efficace.

Les comparaisons explicites avec NULL sont inutilement verbeuses et introduisent une confusion potentielle. Le langage C indique explicitement que les valeurs non nulles dans des contextes booléens sont vraies et que les valeurs nulles sont fausses. L'utilisation de vérifications implicites pour NULL est claire et concise, exprimant l'intention du code sans spécificité redondante.

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