The ones who are crazy enough to think they can change the world are the ones who do.- Steve Jobs
C program defines the states that for each pointer type, When a pointer variable is declared and initialized either by a Null value or by 0 explicitly then the pointer variable is said to be null pointer. Conceptually a null pointer is a pointer that points nowhere, it doesn't have an address of any function or a variable , instead pointer is initialized with zero or null to indicate that this pointer variable is still unused.
data type *variablename = NULL;
Dereferencing pointer variable of void type is bit complex than usual pointer variable. Consider the following program which will not compile .
#include <stdio.h> int main() { int *iptr = NULL; printf("\nValue of iptr = %u", iptr); return 0; }
The above program shows that the pointer variable is initialized by a NULL value.
Being a programmer, in most cases we will uninitialize a pointer variable instead of initializing a Null value to it. Conceptually the null pointer is highly different from uninitialized pointer variable because null pointer points nothing whereas uninitialized pointer points to some garbage address.
#include <stdio.h> int main() { int *nptr = NULL, *ptr; if(nptr == 0) printf(" *nptr is a Null pointer \n "); else printf(" *nptr is a not a Null pointer \n "); if(ptr == 0) printf(" *ptr is a Null pointer \n "); else printf(" *ptr is a not a Null pointer \n "); return 0; }
In the above program, we declared two pointer variable *nptr and *ptr of integer datatype. *nptr is initialized to zero i.e) Null pointer and *ptr is uninitialized pointer variable. This program clearly states that uninitialized pointer is extremely different from null pointer.
Null pointer doesn't belongs to any special datatypes. Datatypes such as char *, int *, float *, double *, long int*, void* are all can be a Null pointer.
Many programmers like you will not prefer to use a plain 0 to initialize the pointer variable to act as null pointer because 0 is of integer datatype and will scattered through their entire pograms, as 0 can represent either numbers or pointers. Therefore, to reduce the conflict, the C program introduces the null value, The NULL is the preprocessor macro which is defined in the #include<stdio.h> header files. Using null to initialize the null pointer is for stylistic convention only, the preprocessor will convert the null back into 0 at the time of compilation.
We may make mistakes(spelling, program bug, typing mistake and etc.), So we have this container to collect mistakes. We highly respect your findings.
© Copyright 2019