Is there any benefit of casting NULL to a struct pointer in C ?
For example:
typedef struct List
{
....
} List;
List *listPtr = ((List *) NULL) ;
Example from PostgreSQL source:
#define NIL ((List *) NULL)
Is there any benefit of casting NULL to a struct pointer in C ?
For example:
typedef struct List
{
....
} List;
List *listPtr = ((List *) NULL) ;
Example from PostgreSQL source:
#define NIL ((List *) NULL)
No null is null, it's as null as you can get, you might think zero is pretty null but that's just peanuts compared to null.
In assignment example the explicit cast make no useful sense. However, it seems that you the question is really about
#define NIL ((List *) NULL)
macro, whose usability extends beyond assignment.One place where it might make sense is when you pass it to a variadic function or to a function declared without a prototype. The standard
NULL
can be defined as0
or0L
or((void *) 0)
or in some other way, meaning that it might be interpreted differently in such type-less contexts. An explicit cast will make sure that it is interpreted correctly as a pointer.For example, this is generally invalid (behavior is undefined)
while replacing the call with
makes it valid.
There's none. It should be simply:
Moreover, if the object has static storage (say, like a global variable) you don't even need to initialize it to NULL.