回答
特別是,以下是明確定義的,還是表現出未定義的行爲?
這是未定義的。 C99 7.21.1/2說,有關的所有字符串函數:
除非另有明確在特定的功能本節描述中所述 ,在這樣的稱呼指針參數 仍應具有有效值
和7.21.4.1中memcmp
的描述沒有明確指出。
這與C和C++有什麼不同嗎?
不,C++將其C語言定義爲C庫函數,並且沒有任何關於memcmp
的特殊說法。
第二個引用的相關性通過前導語境變得更加清晰:在聲明爲size_t n的參數指定函數的數組長度的情況下,在調用該函數時,n的值可以爲零。除非另有明確規定......' – user295691 2013-05-03 18:17:40
已接受,謝謝。還有一個問題:指針的「有效值」是否真的意味着「非空值」?是否有這樣的報價? – avakar 2013-05-04 12:12:24
@avakar:是的,如果你真的想遵循標準一路走到最後,那麼我的引用引用7.1.4定義了「有效」,並且特別包含了「空指針」庫函數的「無效」值的示例。 – 2013-05-05 17:06:37
- 1. 將指針傳遞給指針
- 2. 將指針傳遞給glGenBuffers
- 3. 將值傳遞給指針
- 4. 我可以通過C++/CLI包裝將C#數組傳遞給C指針嗎?
- 5. 將指針傳遞給指針並重新分配空間
- 6. 我可以將templateUrl傳遞給指令嗎?AngularJS
- 7. 我可以傳遞一個指向linux內核空間的指針給__user參數嗎?
- 8. 在memcmp我們可以使用數組而不是指針
- 9. 將NSArray指針傳遞給指定類型的指針
- 10. 將C++雙指針傳遞給python
- 11. 將指南針點傳遞給PHP
- 12. 將指針從java傳遞給本機
- 13. 將NSTextField指針傳遞給IOUSBInterfaceInterface182回調
- 14. 將指針傳遞給結構?
- 15. 將文件指針傳遞給函數
- 16. 如何將指針傳遞給函數?
- 17. 將指針傳遞給函數?
- 18. 將指針數組傳遞給函數
- 19. 無法將地址傳遞給指針
- 20. 無法將指針傳遞給函數
- 21. 將指針傳遞給函數
- 22. 將指針傳遞給函數C++ SDL2
- 23. 將void指針傳遞給LLVM IRBuilder CreateCall
- 24. 將對象指針傳遞給函數
- 25. 將va_list或指針傳遞給va_list?
- 26. 將指針傳遞給某個函數
- 27. 將FILE指針傳遞給函數
- 28. 將指針值傳遞給文件c
- 29. 將父類指針傳遞給子代
- 30. 將指針數組傳遞給python類
這是否運行?您將從NULL讀取內存,我看不到這可以如何工作 – Eric 2013-05-03 15:53:11
太早打開關閉按鈕。這是關於'memcmp',而不是'memcpy'。投票重新開放。 – 2013-05-03 15:54:05
@Eric如果'count'參數爲'0',指針不應該被取消引用。但這就是說,問題是問標準是否能保證這種行爲,我不知道答案。 – Praetorian 2013-05-03 15:54:08