Здравствуйте, Аноним, Вы писали:
А>по C NULL машинно зависим т.е. может и не быть в представлении машины нулем,
А>а Страуструп пишет что можно безболезненно менять 0 на NULL. Что делать?
Ниего не делать

Конвертация из 0 в машинное представление нулевого указателя осуществляеться на основе
типа константы
(int)0 всегда останется нулём (по умолчанию все числовые константы имеют тип int, если не указано другое)
(int *)0 будет преобразовано в машинное представление нулевого указателя.
Обычно преобразование типа параметра не шаблонной функции осуществляется на основе её прототипа. так что в
memcmp(0,0,0)
Первые 2 параметра это указатели, а третий(последний) это число.
К тому же вроде как
#define NULL 0
а не
#define NULL ((void *)0)
Так что NULL это просто более удобное и понятное в конкретном контексте название.