What is a Pointer to a Null pointer

NULL pointer in C
At the very high level, we can think of NULL as a null pointer which is used in C for various purposes. Some of the most common use cases for NULL are

  1. To initialize a pointer variable when that pointer variable isn’t assigned any valid memory address yet.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    int* pInt = NULL;

    chevron_right

    
    

  2. To check for a null pointer before accessing any pointer variable. By doing so, we can perform error handling in pointer related code e.g. dereference pointer variable only if it’s not NULL.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    if (pInt != NULL) /*We could use if(pInt) as well*/
    { /*Some code*/
    }
    else { /*Some code*/
    }

    chevron_right

    
    

  3. To pass a null pointer to a function argument when we don’t want to pass any valid memory address.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    int fun(int* ptr)
    {
        /*Fun specific stuff is done with ptr here*/
        return 10;
    }
    fun(NULL);

    chevron_right

    
    

Pointer to a Null Pointer
As Null pointer always points to null, one would think that Pointer to a Null Pointer is invalid and won’t be compiled by the compiler. But it is not the case.

Consider the following example:



filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
int main()
{
  
    // Null pointer
    char* np = NULL;
  
    // Pointer to null pointer
    char** pnp = &np;
  
    if (*pnp == NULL) {
        printf("Pointer to a null pointer is valid\n");
    }
    else {
        printf("Pointer to a null pointer is invalid\n");
    }
  
    return 0;
}

chevron_right


Not only this program compiles but executes successfully to give the output as
Output:

Pointer to a null pointer is valid

Explanation:
What happens here is that when a Null pointer is created, it points to null, without any doubt. But the variable of Null pointer takes some memory. Hence when a pointer to a null pointer is created, it points to an actual memory space, which in turn points to null.

Hence Pointer to a null pointer is not only valid but important concept.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.