char **bla1 = (void *) 0;
char **bla2 = 0;
char **bla3 = 0L;
All these assignments (initialization is done as per assigment) are valid in C and equivalent.
You can pass always NULL
if the expected argument is of type int *
or char **
.
As @R.. added in his comment, this last sentence is true but with the exceptions of functions that accept a variable number of arguments and functions defined in the prototyped (old-style) syntax. In both these cases a cast would be required.