Home / Questions / What is void pointer in C?
Explanatory Question

What is void pointer in C?

👁 946 Views
📘 Detailed Answer
🕒 Easy to Read
Read the answer carefully and go through the related questions on the right side to improve your understanding of this topic.

Answer with Explanation

  • Void pointer is a generic pointer that can be used to point another variable of any data type.
  • Void pointer can store the address of variable belonging to any of the data type. So, void pointer is also called as general purpose pointer.

Note:
int pointer can be used to point a variable of int data type and char pointer can be used to point a variable of char data type.


In C, a void pointer, also known as a generic pointer, is a special pointer type that can hold the address of an object of any data type. It is declared using the void * type.

The void * type is considered "generic" because it lacks a specific data type. It allows a pointer to be assigned and manipulated without specifying the data type of the object it points to. However, you cannot directly dereference a void pointer or perform pointer arithmetic on it, as the compiler does not know the size or type of the object being pointed to.

Here's an example illustrating the use of a void pointer:


#include <stdio.h>

int main() {
    int num = 42;
    float pi = 3.14159;
    char letter = 'A';

    void* ptr;

    ptr = &num;
    printf("Value pointed by ptr: %d\n", *(int*)ptr);

    ptr = π
    printf("Value pointed by ptr: %.5f\n", *(float*)ptr);

    ptr = &letter;
    printf("Value pointed by ptr: %c\n", *(char*)ptr);

    return 0;
}

In the above example, a void pointer ptr is declared. It is then assigned the address of different variables (num, pi, and letter) successively. By explicitly casting ptr to the appropriate type (int*, float*, or char*) before dereferencing it, we can access the values pointed to by the void pointer.

Note that when using void pointers, you need to ensure proper type casting and handle them with caution, as there is no type checking at compile-time. It is crucial to cast the void pointer to the correct type before dereferencing it to avoid errors and maintain type safety.