比较指针是否相等:C 标准演练
在 C 中,比较指针是否相等可以很简单,但需要遵守符合语言标准中概述的特定规则。
相等运算符 (==, !=)
对于相同类型的指针,使用 == 或 != 进行相等比较会产生直观的结果。如果两个指针都为空、都指向同一函数或都指向同一地址,则它们相等。
关系运算符 (
相同类型的指针也可以使用关系运算符进行比较。如果它们指向相同的对象或函数,它们将按预期进行比较:p=q 产生 true,而 pq 产生 false。
但是,如果指针指向不同的对象或函数,或者如果其中之一为空,则关系比较的结果是未指定的。这意味着它们的行为取决于实现。
规则的例外
数组元素:如果指针指向同一数组的元素,指向索引较高的对象的指针比较较大。
Union成员: 如果指针指向同一个联合体的成员,则转换为 void* 后比较相等。
其他类型的指针:
注意事项
奖励:标准库助手
标准库提供了模板函数 std::greater、std::less、std::greater_equal 和 std::less_equal,其中可以用来对任何类型的指针进行排序,即使内置运算符不能。
以上是如何在 C 中安全地比较指针的相等性和排序?的详细内容。更多信息请关注PHP中文网其他相关文章!