Several programming languages make use of the concept of null.

Go has nil, JavaScript has null, Python has None, and so on.

C has NULL.

NULL however is used differently from other languages. In C, NULL is limited to identifying a null pointer.

When we initialize a pointer, we might not always know what it points to. That’s when it is useful:

int * p_some_variable = NULL;

NULL is not available by default: you need to include stdio.h to use it (or if you prefer, stddef.h:

#include <stdio.h>

int main(void) {
  int * p_some_variable = NULL;
}

Otherwise the C compiler will give you an error:

hello.c:3:26: error: use of undeclared identifier
      'NULL'
        int * p_some_variable = NULL;
                                ^
1 error generated.

You can check if a pointer is a null pointer by comparing it to NULL:

#include <stdio.h>

int main(void) {
  int * p_some_variable = NULL;

  if (p_some_variable == NULL) {
    printf("equal");
  }
}

In practice, NULL is a constant equivalent to 0, or "\0".

This is why you can set a string to NULL using:

char *a_string = '\0';