NULL macro is same as any other macros which will be replaced by its macro body during preprocessor stage of compilation.
Following may be the declaration for NULL Macro depending on the compiler
#define NULL ((char *)0)
or
#define NULL 0L
or
#define NULL 0
NULL Pointer is pointer pointing to NULL location,
int *p=NULL;