回答
在您提供的代碼NULL
是無用的,因爲指針永遠不會在兩個賦值(即分配NULL
和指定和指定&a
)之間進行訪問。不過,也有其他的情況下,當分配NULL
的指針是非常可取的:
- 如果一個內存位置的指針賦值發生條件,然後將指針傳遞給
free
在最後,你需要在初始化 - 分配
NULL
指針當指針與free
釋放,但仍然是一些額外的時間可見,你應該釋放它,避免懸空引用 - 當情況可能會出現,當一個後置指針
NULL
指針在無效後被訪問,您需要指定NULL
指針,以便儘可能快地失敗。
第二點:只有在讀取和複製時才適用。到第三:應該追捕和消滅蟲蟲。 – Deduplicator
@Deduplicator「應該追捕和消滅蟲子。」在我的回答中,我有沒有說出相反的結果?你不能追捕你看不到的錯誤。取消引用「NULL」實際上是確保崩潰的一種保證,而取消引用懸掛指針可能會造成對正在運行的程序的錯誤印象。 – dasblinkenlight
@dasblinkenlight:實際上,據我可以告訴讀取未初始化變量的值 - 包括指針是UB,所以有人可能想提及它? –
- 1. 如何將值賦給指向NULL的指針
- 2. 指向函數賦值的指針
- 3. 指向結構argv賦值的指針
- 4. 對象指針賦值指針向量的元素
- 5. C將指針指向NULL
- 6. 不良指針? - C++
- 7. 警告的指針賦值
- 8. 賦值給指針2d指針
- 9. 賦值使指針無整型指針
- 10. 指針賦值不同的行爲
- 11. 空指針賦值錯誤。
- 12. 指針賦值錯誤C
- 13. 將值賦給指針C
- 14. 指針引用賦值
- 15. 忽略指針賦值
- 16. C++ const char *指針賦值
- 17. 空指針賦值錯誤
- 18. c字符指針賦值
- 19. JavaScript函數指針賦值
- 20. 函數指針賦值
- 21. 因爲指針賦值
- 22. 指針變量賦值
- 23. 爲指針賦值無新
- 24. 在指針中賦值的麻煩
- 25. 不能賦值給變量和指針
- 26. 打印指針指向的值(C編程)
- 27. C++教程將指針賦值給指針而不需要解除引用
- 28. 指向右值的指針
- 29. 將指針指向無匹配NULL的指針嗎?
- 30. 我可以看到指向NULL指針的值嗎?
在上面的代碼中,它沒有實現任何功能。 –
上面可能會/應該/可以寫成:int a = 0,b = 0,* ptr =&a;'。不確定*任何事物*往往會在未來出現未定義的行爲。它不是一些神聖的規則,而是一種遵循的良好慣例。在你的代碼中,將NULL(或任何其他)賦值給'ptr'意味着什麼,因爲在再次分配('a'的地址)之前,你永遠不會評估'ptr'。 – WhozCraig
@MGaz如果你指的是我在我之前的評論中發佈的代碼,那麼說實話,我不能提出任何比你說的更恰當的話,而你是完全錯誤的。整行是decl +初始化。 – WhozCraig