回答
特別是,以下是明確定義的,還是表現出未定義的行爲?
這是未定義的。 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. 在memcmp我們可以使用數組而不是指針
- 4. 將NSArray指針傳遞給指定類型的指針
- 5. 將指南針點傳遞給PHP
- 6. 將全局指針傳遞給函數
- 7. 將參數傳遞給函數指針
- 8. 將指針傳遞給成員函數
- 9. 將指針傳遞給某個函數
- 10. 將指針傳遞給函數?
- 11. 將NSTextField指針傳遞給IOUSBInterfaceInterface182回調
- 12. 將對象指針傳遞給函數
- 13. 將void指針傳遞給LLVM IRBuilder CreateCall
- 14. 將C++雙指針傳遞給python
- 15. 無法將指針傳遞給函數
- 16. 將指針從java傳遞給本機
- 17. 將函數指針傳遞給函數
- 18. 將va_list或指針傳遞給va_list?
- 19. 將指針數組傳遞給函數
- 20. 將指針傳遞給函數C++ SDL2
- 21. 將指針傳遞給Perl 6 Nativecall
- 22. 我可以將指向類對象的指針傳遞給函數嗎?什麼是正確的語法?
- 23. 我可以將DataTable傳遞給我的SQL語句(INSERT)嗎?
- 24. C++ gmock - 將空指針傳遞給SaveArg時會發生什麼
- 25. 我應該刪除傳遞給函數的指針嗎?
- 26. 將大結構指針傳遞給函數緩存有效嗎?
- 27. 將void指針傳遞給函數指針
- 28. 將值指針傳遞給c函數中的指針值
- 29. 如何將指針和指針傳遞給函數?
- 30. C++將指針傳遞給函數(Howto)+ C++指針操作
這是否運行?您將從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