首页 >后端开发 >C++ >比较 C 中的指针时,等式和关系运算符的可靠性如何?

比较 C 中的指针时,等式和关系运算符的可靠性如何?

DDD
DDD原创
2024-11-19 13:19:03682浏览

When Comparing Pointers in C  , How Reliable Are the Equality and Relational Operators?

比较对象等价的指针

比较引用同一变量的指针时,如示例所示:

问题是相等运算符“a == b”是否提供了预期的结果

相等运算符 (==, !=)

根据 C 标准,可以比较相同类型的指针是否相等:

  • 如果它们都为空、指向相同的函数或表示相同的值,则它们比较相等地址。
  • 空指针比较彼此相等,而非空指针与空指针比较总是不相等。

关系运算符 (; , =)

仅定义指针的关系运算符用于指向相同类型的对象或函数的指针。结果取决于指针是否指向同一个对象或函数,或者其中一个或两个都为 null。

例如,在数组的情况下,指向不同元素的指针比较彼此大于或小于基于它们在数组中的位置。但是,将指针与非数组对象或不是同一对象的成员的函数进行比较可能会产生未指定的结果。

虚拟函数的异常

在以下情况下指针指向虚成员函数,比较结果标准未指定。

中的比较实践

需要注意的是,使用相等运算符(==、!=)进行指针比较通常是定义良好且可靠的,用于确定指针是否指向同一个对象。但是,应谨慎使用关系运算符(、=),因为它们的行为可能会根据具体上下文而有所不同。

奖励:与模板

标准库还提供了指针比较的模板,比如std::less

以上是比较 C 中的指针时,等式和关系运算符的可靠性如何?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn