Except that when you're passing parameters to variadic functions like the exec functions, the compiler cannot perform the silent conversion of a plain 0 into a NULL pointer of the correct type.
(char*)NULL or (char*)0 would be the most accurate things to write.