回答
特别是,以下是明确定义的,还是表现出未定义的行为?
这是未定义的。 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