C/C 中的 NULL 指標檢查:方法比較
在程式碼審查中,經常會出現 NULL 指標檢查的主題。一位貢獻者主張使用與NULL 的明確比較:
int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed }
另一方認為,透過在if 語句中使用指標變數隱式檢查NULL 同樣清晰:
int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error }
This出於多種原因,優選後一種方法。首先,它避免了引入邏輯錯誤的風險,例如將NULL 分配給指針變數而不是比較它:
if (some_ptr = NULL)
其次,它與C 類兼容,如unique_ptr、shared_ptr 和auto_ptr指針,但提供布林值轉換。與 NULL 的明確比較需要轉換為指針,這可能會產生副作用或效率較低。
與 NULL 的明確比較不必要地冗長,並會帶來潛在的混亂。 C 語言明確指出布林上下文中的非零值是 true,零值是 false。對 NULL 使用隱式檢查清晰簡潔,表達了程式碼的意圖,沒有多餘的特異性。
以上是您應該在 C/C 中明確檢查 NULL 指標嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!