空指針的困境:NULL 與0
在C 編碼實踐的掛毯中,出現了關於使用NULL 與空指針的0 (零)。這個討論的起源在於 C 的早期,當時 NULL 被定義為 (void*)0。這個約束限制了它對 void 指標的分配,使其有些不切實際。因此,開發人員採用了使用 0 作為空指標的約定。
儘管 C 不斷發展,但偏好仍然存在。有些程式設計師(如作者)偏好 0,因為它直觀地用作空值,並且與真值測試相容(if (p && !q))。相反,其他人則基於美學主張 NULL。
為了解決這個持續存在的問題,讓我們考慮一下 C 的創建者 Bjarne Stroustrup 的觀點。根據 Stroustrup 的 C 風格和技術常見問題解答,NULL 實際上與 C 中的 0 同義,這取決於個人喜好。他建議使用 0 來避免宏,並強調預標準的 NULL 定義有時會導致意外行為。
在 C 11 中,引入了 nullptr 關鍵字來明確定義空指標值。然而,Stroustrup 建議專注於程式碼功能,而不是專注於細微差別。
最終,NULL 和 0 之間的選擇仍然是個人喜好問題。兩種方法都有其優點,但都沒有本質上的優越性。確保編碼團隊或專案內的一致性很重要,但沒有客觀理由明確地選擇一種選擇而不是另一種選擇。
以上是C 中的 NULL 與 0:我應該使用哪一個作為空指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!