# How to use NULL in C

> A brief guide to NULL in C, where it stands only for a null pointer, why you include stdio.h or stddef.h to use it, and how to check a pointer against it.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-02-13 | Topics: [C](https://flaviocopes.com/tags/clang/) | Canonical: https://flaviocopes.com/c-null/

Several programming languages make use of the concept of **null**.

Go has `nil`, [JavaScript](https://flaviocopes.com/javascript/) has `null`, [Python](https://flaviocopes.com/python-introduction/) 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](https://flaviocopes.com/c-pointers/), we might not always know what it points to. That's when it is useful:

```c
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`:

```c
#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`:

```c
#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:

```c
char *a_string = '\0';
```
