【发布时间】:2012-04-03 13:23:38
【问题描述】:
我引用了 Kernighan & Ritchie 的“The C Programming Language”:
任何指针都可以有意义地比较是否等于或不等于零。但是对于算术或与不指向同一数组成员的指针的比较,行为是未定义的。 (有一个例外:数组末尾之后的第一个元素的地址可用于指针运算。)
这是否意味着我不能依靠== 来检查不同指针的相等性?什么情况下这种比较会导致错误的结果?
【问题讨论】:
-
如果您有不同类型的指针并且它们具有相同的值,那么它们指向相同的内存地址,您可能会遇到一些问题。但是无论如何,如果您绝对肯定内存布局是完全线性的,那么比较指针通常是可以的。否则,不行。想想 8086。
标签: c pointers comparison equality