C++ Program for void Pointer

04/06/2024 0 By indiafreenotes

A void pointer is a special type of pointer that can point to any data type. This is because a void pointer does not have an associated data type. However, since it doesn’t have a specific type, you cannot dereference it directly without casting it to another pointer type.

Key Concepts

  1. Declaration of a Void Pointer

void* ptr;

 

This declares a void pointer ‘ptr’ that can hold the address of any data type.

  1. Assigning Addresses to a Void Pointer

int a = 10;

float b = 5.5;

ptr = &a; // Void pointer pointing to an integer

ptr = &b; // Void pointer pointing to a float

  1. Dereferencing a Void Pointer

Since a void pointer does not have a type, you need to cast it to the appropriate type before dereferencing

int* intPtr = (int*)ptr;

cout << *intPtr << endl;

float* floatPtr = (float*)ptr;

cout << *floatPtr << endl;

 

Example Program: Using Void Pointers

Here’s a complete program that demonstrates the use of void pointers in C++:

#include <iostream>

using namespace std;

void printValue(void* ptr, char type) {

    switch (type) {

        case ‘i’: // Integer

            cout << “Integer: ” << *(int*)ptr << endl;

            break;

        case ‘f’: // Float

            cout << “Float: ” << *(float*)ptr << endl;

            break;

        case ‘d’: // Double

            cout << “Double: ” << *(double*)ptr << endl;

            break;

        case ‘c’: // Character

            cout << “Character: ” << *(char*)ptr << endl;

            break;

        default:

            cout << “Invalid type!” << endl;

    }

}

int main() {

    int a = 10;

    float b = 5.5f;

    double c = 3.14159;

    char d = ‘A’;

    void* ptr; // Declare a void pointer

    // Using the void pointer to point to different data types

    ptr = &a;

    printValue(ptr, ‘i’);

    ptr = &b;

    printValue(ptr, ‘f’);

    ptr = &c;

    printValue(ptr, ‘d’);

    ptr = &d;

    printValue(ptr, ‘c’);

    return 0;

}

Explanation of the Program

  1. Function ‘printValue’

This function takes a void pointer and a type identifier. It casts the void pointer to the appropriate type based on the type identifier and prints the value. The switch statement is used to handle different data types.

  1. Main Function

  • Four variables of different types (int, float, double, char) are declared.
  • A void pointer ‘ptr’ is used to point to each of these variables.
  • The ‘printValue’ function is called with the void pointer and a type identifier to print the value pointed to by the void pointer.