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