Могу ли я передать нулевой указатель на memcmp?
в частности, является ли следующее четко определенным или оно демонстрирует неопределенное поведение?
memcmp(0, 0, 0);
отличается ли это между C и c++? В идеале, пожалуйста, укажите цитату из стандарта(ов).
1 ответов
в частности, является ли следующее четко определенным или оно демонстрирует неопределенное поведение?
это неопределенно. C99 7.21.1 / 2 говорит обо всех строковых функциях:
Если явно не указано в противном случае в описании конкретной функции в данном подпункте, аргументов указатель при таком вызове все равно должны быть допустимые значения
и memcmp
в 7.21.4.1 явно не указано иначе.
отличается ли это между C и c++?
нет, C++ ссылается на C для определения функций библиотеки C и не имеет ничего особенного сказать о memcmp
.