據我所知,NULL實際上不是0.那麼比較指針與0或NULL有什麼區別? 進一步什麼應該是正確的用法。謝謝!將指針與0或NULL進行比較有什麼區別嗎?
2
A
回答
4
3
在C,宏NULL被定義爲實現定義空指針常數,這在C99可以可移植地表示爲隱式或顯式轉換爲類型void*
的整數值0。
在C++中,NULL是零的整數字面量(0
或0L
)傳統上一直傾向於表示空指針常量。
在與指針比較的情況下,編譯器會隱式地將0
轉換爲NULL
。
將0
與NULL
進行比較總是安全的。
+2
「大多數編譯器在與指針進行比較的情況下會隱式地將0轉換爲NULL。」實際上,這是標準所要求的,所以它應該是「所有編譯器」。 –
+1
@DietrichEpp和Inafzier謝謝。我更新了聲明。 – banarun
-1
相關問題
- 1. Boost python,將原始指針與託管指針進行比較?
- 2. 刪除指針並將指針設置爲NULL有什麼區別?
- 3. 初始化變量和指針與NULL還是0有區別嗎?
- 4. equals和==之間的區別是否與null進行比較?
- 5. 將NULL與INT進行比較
- 6. 指向指針的指針與C中指針的地址有什麼區別?
- 7. 什麼區別=指針
- 8. eclipse比較API有什麼區別?
- 9. ''和「」比較有什麼區別?
- 10. 爲什麼將成員函數指針與NULL比較會生成警告?
- 11. 這兩個指針有什麼區別?
- 12. null,0和nothing什麼區別?
- 13. 將指針與if語句中的整數進行比較
- 14. 比較器和可比較器有什麼區別?
- 15. 不初始化指針並將其初始化爲null會有什麼區別?
- 16. | 0和~~有什麼區別?
- 17. C:指針=變量和指針=變量有什麼區別?
- 18. 常量指針和整型常量指針有什麼區別?
- 19. Boost智能指針和std智能指針有什麼區別?
- 20. 泛型指針和void指針有什麼區別?
- 21. 當與括號比較時有什麼區別:WHERE(a,b)=(1,2)
- 22. (null)和<null>有什麼區別?
- 23. != null和!== null之間有什麼區別?
- 24. Struts2 taglib,與null進行比較
- 25. 靜態函數與類的靜態指針有什麼區別
- 26. 函數指針與函數調用有什麼區別?
- 27. -0和0有什麼區別?
- 28. 指針 - 數組與指針的區別
- 29. *(指針+索引)與指針[]的區別
- 30. 將列與有效值進行比較
是否有任何理由使用'0'而不是'NULL'? – Gabe
不,不是很好。最好的(在我看來)是不要使用或者只是使用!或者使用指針本身作爲控制表達式。 –
http://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0 – dijkstra