比较const和非const指针。比较合法吗?任何特殊照顾这种比较。谢谢。比较const和非const指针?
2
A
回答
8
一个指向T
可以隐式转换成一个const指针T
;类似地,一个指针T
可以隐式转换成指针const T
。当您尝试比较指向常量指针的指针时,编译器将根据需要执行这些转换中的一种或两种转换。没有什么比比较两个非const指针或两个const指针更有风险了。
-2
常量的目的在
为const char * p
是保证,你将不会改变它。从理论上讲,非常量指针不应该指向同一代码中的相同位置,因为这是一个很好的编码实践。在实践中,你最终可能会做出一些常量,因为这会让你的生活变得更加简单,但从概念上讲它并不是一个真正的常量。在这种情况下,您可能需要进行比较。如前所述,根据你使用的编译器和它的设置,它可能会也可能不会喜欢这样的比较。万一它可能不是,迫使投给一个非const如果这个比较之前困扰着你,像这样的,例如:
如果((的char *)const_p == non_const_p)
相关问题
- 1. const const指针参数的非const指针参数
- 2. const指针指向一个const指针
- 3. 为什么const引用非const指针被解释为const指针?
- 4. Bitiwise Const和指针:
- 5. const限定符和Const指针
- 6. 模板的typedef接受指针const和非const功能
- 7. 指针是否可以指向const空类或非const类?
- 8. const char ** p指针和整数之间的比较if(** p == NULL)
- 9. 挥发性和const指针
- 10. 常量性和const指针
- 11. const指针指向const数据的常量指针
- 12. 将const结构引用转换为非const结构指针
- 13. “分配丢弃‘const’限定符”关于非const指针错误
- 14. 调用从const成员函数非const成员函数指针
- 15. 非const指针喜欢常量T&超载为const T *
- 16. std :: is_const将const指针标识为非const
- 17. 外部const指针的const正确性
- 18. const的指针指向const int的强制转换为const指针指向int的指针
- 19. 将const int指派给一个指向int的const指针是非法的?
- 20. 声明const的指针或const指针作为形式参数
- 21. C++ - 使用操作符重载无法比较const和非const模板类型
- 22. const中的非const
- 23. 如何在D中声明一个const指针指向非const/mutable数据?
- 24. const char *与==的比较
- 25. 指针到指针到const的转换
- 26. const ref和const指针之间的区别,C++
- 27. const char指针修改
- 28. 声明const指针为int?
- 29. C++ const char *指针赋值
- 30. 调用Const函数指针
你为什么不试试。 –
我同意@SteveWellens:问你的编译器:-) –
你能澄清你的意思是“const和非const指针”吗?通常常量几乎不会阻止任何东西(除非赋值,显然,并采取放弃const的操作);一个“int * const”(常量指针)和一个“int *”(非常量指针)实际上是相同的。你的意思是“指向常量和非常量数据的指针”,如'const int *'与'int *'中的一样? – ruakh