比較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