Maison >développement back-end >C++ >Comment comparer en toute sécurité les pointeurs d'égalité et d'ordre en C ?
Comparaison des pointeurs pour l'égalité : présentation pas à pas de la norme C
En C, comparer les pointeurs pour l'égalité peut être simple, mais cela nécessite le respect à des règles spécifiques décrites dans la norme linguistique.
Opérateur d'égalité (==, !=)
Pour les pointeurs du même type, la comparaison d'égalité à l'aide de == ou != donne des résultats intuitifs. Deux pointeurs sont égaux s'ils sont tous deux nuls, tous deux pointent vers la même fonction ou tous deux pointent vers la même adresse.
Opérateurs relationnels (<, >, <=, >= )
Les pointeurs du même type peuvent également être comparés à l'aide d'opérateurs relationnels. S'ils pointent vers le même objet ou la même fonction, ils se comparent comme prévu : p<=q et p>=q donnent vrai, tandis que pq donnent faux.
Cependant, si les pointeurs pointent à différents objets ou fonctions, ou si l'un d'eux est nul, les résultats des comparaisons relationnelles ne sont pas spécifiés. Cela signifie que leur comportement dépend de l'implémentation.
Exceptions à la règle
Éléments du tableau : Si les pointeurs pointent vers des éléments du même tableau , le pointeur vers l'objet avec un indice plus élevé se compare à un plus grand.
Membres de l'Union : Si les pointeurs pointent aux membres du même syndicat, ils se comparent égaux après conversion en void*.
Autres types de pointeurs :
Avertissements
Bonus : Standard Library Helper
La bibliothèque standard fournit les fonctions de modèle std::greater, std::less, std::greater_equal et std::less_equal, qui peuvent être utilisés pour commander n'importe quel type de pointeur, même lorsque les opérateurs intégrés ne le peuvent pas.
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!