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