我可以将空指针传递给memcmp吗?

ava*_*kar 13 c c++ memcmp

特别是,以下定义明确,还是表现出未定义的行为?

memcmp(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这在C和C++之间有区别吗?理想情况下,请提供标准报价.

Mik*_*our 31

特别是,以下定义明确,还是表现出未定义的行为?

这是未定义的.C99 7.21.1/2说明了所有的字符串函数:

除非在本子条款中对特定函数的描述中另有明确说明,否则此类调用上的指针参数仍应具有有效值

并且memcmp7.21.4.1中的描述没有明确说明.

这在C和C++之间有区别吗?

不,C++对C库函数的定义推迟了C,并没有什么特别的说法memcmp.

  • @avakar:是的,如果你真的想要一直遵循标准,那么我的引用引用7.1.4来定义"valid",并且在示例列表中特别包含"空指针"库函数的"无效"值. (2认同)