Void Pointer (Generic Pointer) in C

28 Dec 2022 Balmiki Mandal 0 C Programming

Definition

A void pointer in C is a pointer that doesn't have an associated data type. It can hold the address of any data type, making it a versatile tool for generic programming. It's a blank pointer that can be cast to any other pointer type.

C Programming
#include <stdio.h>

int main() {
    int num = 10;
    float f = 3.14;
    char ch = 'A';

    void *ptr; // Declare a void pointer

    ptr = &num; // Assign address of an integer
    printf("Integer value: %d\n", *(int*)ptr); // Typecast to int and dereference

    ptr = &f; // Assign address of a float
    printf("Float value: %f\n", *(float*)ptr); // Typecast to float and dereference

    ptr = &ch; // Assign address of a character
    printf("Character value: %c\n", *(char*)ptr); // Typecast to char and dereference

    return 0;
}
 

Explanation

  1. Declaration: void *ptr; declares a void pointer named ptr.
  2. Assignment: ptr = &num; assigns the address of the integer num to ptr.
  3. Typecasting and Dereferencing: *(int*)ptr typecasts ptr to an integer pointer and dereferences it to access the integer value.
  4. Similar operations: The same process is repeated for the float and character variables.

Key Points

  • Void pointers are generic, but they must be typecast before dereferencing to access the correct data.
  • They are often used in functions that handle data of unknown types, like malloc, calloc, and realloc.
  • While flexible, use void pointers carefully to avoid type-related errors.
  • Always ensure correct typecasting when accessing data through a void pointer.

Remember:

  • Void pointers can point to any data type, but they don't carry type information themselves.
  • Typecasting is essential for correct data interpretation.
  • Misuse of void pointers can lead to undefined behavior and potential crashes.

 

By understanding void pointers, you can write more flexible and generic code in C.

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.