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.





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.


Article Tags :
Practice Tags :