比较常量指针和非常量指针

Compare const and non-const pointers?

本文关键字:常量 指针 非常 比较      更新时间:2023-10-16

比较常量指针和非常量指针。这种比较合法吗?任何对这种比较的特别注意。谢谢

指向T的指针可以隐式转换为指向T的常量指针;类似地,指向T的指针可以隐式地转换为指向const T的指针。当您尝试将指针与常量指针进行比较时,编译器将根据需要执行其中一种转换,或者同时执行这两种转换。没有什么比比较两个非常量指针或两个常量指针更危险的了。

中const的目的

const char*p

就是承诺你不会改变它。理论上,一个非常量指针永远不应该指向同一代码中的同一位置,这是一个良好的编码实践。在实践中,你可能最终会制造一些非常量,因为它会让你的生活更轻松,但从概念上讲,它并不是真正的非常量。在这种情况下,您可能需要进行比较。如前所述,根据您使用的编译器及其设置,它可能喜欢也可能不喜欢这样的比较。为了避免这种情况,如果这让你感到困扰,在进行比较之前,强制将强制转换为非常数,例如:

如果((char*)const_p==non_const_p)