The difference between Null pointer and Void pointer is that Null pointer is a value and Void pointer is a type.
NULL pointer
A null pointer means it is not pointing to anything. If, there is no address that is assigned to a pointer, then set it to null.
A pointer type, i.e., int *, char * each have a null pointer value.
The syntax is as follows −
<data type> *<variable name> = NULL;
For example,
int *p = NULL; char *p = '\0';
Example Program
Following is the C program for NULL pointer −
#include<stdio.h> int main(){ printf("TutorialPoint C Programming"); int *p = NULL; // ptr is a NULL pointer printf("\n The value of pointer is: %x ", p); return 0; }
Output
When the above program is executed, it produces the following result −
TutorialPoint C Programming The value of pointer is: 0
Void Pointer
A void pointer is nothing but the one who does not have any data type with it. It is also called as a general purpose pointer. It can hold the addresses of any data type.
Thee syntax is as follows −
void *<data type>;
For example,
void *p; int a; char c;
p = &a; //p changes to integer pointer as address of integer is assigned to it
p = &c; //p changes to character pointer as address of character is assigned to it
Example
Following is the C program for Void Pointer −
#include<stdio.h> int main(){ int a = 10; void *ptr = &a; printf("%d", *(int *)ptr); return 0; }
Output
When the above program is executed, it produces the following result −
10