J'ai remarqué dans plusieurs codes, ainsi que dans certaines manuels de programmation, qu'il était préférable de tester si un pointeur est nul avec les instructions :
if (NULL!=pToto) ...
plutôt qu'avec :
if (pToto!=NULL) ...
, sans toutefois parvenir à trouver une explication satisfaisante.
Quelqu'un saurait-il me répondre svp ?
Merci.
Laurent
A voir également:
à propos de la façon de tester la nullité d'un pointeur
Perso, je ne vois pas trop l'intérêt, mais peut-être parce qu'un
pointeur NULL renvoie NULL alors que NULL n'est pas vraiment une
constante... Toujours est-il que if (pToto!=NULL) marche très bien !
DarK Sidious
________________________________________________________
je crois me rappeler qu'il s'agit en fait plus d'une précaution afin d'éviter je ne sais quelle erreur de syntaxe ou de frappe, plus que d'une réelle mesure destinée à éviter une erreur d'éxécution du code... la question reste ouverte!
Attention toutefois avec la valeur NULL dans ce cas. En effet, NULL n'est pas n'ecessairement une valeur du type pointeur mais une valeur qui donne un pointeur nul si elle est affect'ee ou pass'ee ou compar'ee `a un type pointeur. Le passage d'une valeur `a un param`etre n'est pas une affectation `a un pointeur mais une affectation qui ob'eit aux lois sp'eciales pour les param`etres `a nombre variable (ou pour les param`etres d'une fonction sans prototype). Les lois de promotion pour les types arithm'etiques sont appliqu'ees). Si NULL est d'efini par
#define NULL 0 alors (int)0 est pass'e `a la fonction. Si un pointeur n'a pas la m^eme taille qu'un int ou si un pointeur nul n'est pas repr'esent'e par o"" tous les bits 0 r' le passage d'un 0 ne passe donc pas de pointeur nul. La m'ethode portable est donc
f(toto,titi,(void*)NULL);
ou f(toto,titi,(void*)0);
C'est le seul cas o`u il faut caster NULL parce qu'il ne s'agit pas d'un contexte syntactique o"" de pointeur r', seulement d'un contexte o"" de pointeur par contrat r'.