比较const和非const指针。比较合法吗?对此类比较有任何特殊照顾。感谢。
答案 0 :(得分:10)
指向T
的指针可以隐式转换为指向T
的const指针;类似地,指向T
的指针可以隐式转换为指向const T
的指针。当您尝试将指针与const指针进行比较时,编译器将根据需要执行这些转换中的任一个或两者。没有什么比比较两个非常量指针或两个常量指针更危险了。
答案 1 :(得分:-2)
中const的目的
const char * p
是承诺你不会改变它。从理论上讲,非const指针永远不应该指向相同代码中的相同位置,这是一个良好的编码实践。在实践中,你最终可能会制作一些常量,因为它会让你的生活变得更轻松,但从概念上讲它并不是真正的常量。在这种情况下,您可能需要进行比较。如前所述,根据您使用的编译器及其具有的设置,它可能会也可能不会像这样的比较。万一它可能不会,在比较之前强制转换为非const,如果这困扰你,就像这样,例如:
if((char *)const_p == non_const_p)