C++ Tutorial Index

C++ Tutorial C++ History C++ Installation C++ First Program C++ cin and cout C++ Data type C++ Variable C++ operator C++ Keywords

C++ Control Statements

C++ If C++ Nested if C++ If-else C++ If-else-if C++ Switch C++ Break C++ Continue C++ Goto C++ For loop C++ While loop C++ Do while loop

C++ Functions

C++ Call by Value C++ Call by Reference C++ Recursion Function C++ Inline function C++ Friend function

C++ Arrays

Single dimension array Two dimension array

C++ Strings

C++ Strings

C++ Inheritance

C++ Inheritance Single level Inheritance Multilevel Inheritance Multiple Inheritance Hierarchical Inheritance Hybrid Inheritance

C++ Polymorphism

C++ Polymorphism C++ Overloading C++ Overriding C++ Virtual Function

C++ Pointers

C++ Pointers C++ this pointer

C++ Exception Handling

C++ Exception Handling

C++ Constructors

C++ Constructors Default Constructor Parameterize Constructor Copy constructor Constructor Overloading Destructor

C++ File Handling

C++ File Handling C++ Writing to file C++ Reading file C++ Close file

Miscellaneous

C Vs C++ C++ Comments C++ Data Abstraction C++ Identifier C++ Memory Management C++ Storage Classes C++ Void Pointer C++ Array To Function C++ Expressions C++ Features C++ Interfaces C++ Encapsulation std::min in C++ External merge sort in C++ Remove duplicates from sorted array in C++ Precision of floating point numbers Using these functions floor(), ceil(), trunc(), round() and setprecision() in C++ C++ References C++ Friend Functions C++ Mutable keyword Unary Operators in C++ Initialize Array of objects with parameterized constructors in C++ Differences between #define & const in C/C++ C++ Program to Implement Shell Sort C++ Program to Implement Merge Sort Storage Classes in C Vector resize() in C++ Passing by Reference Vs. Passing by the pointer in C++ Free vs delete() in C++ goto statement in C and C++ C++ program to read string using cin.getline() C++ String Concatenation Heap Sort in C++ Swap numbers in C++ Input Iterators in C++ Fibonacci Series in C++ C ++ Program: Alphabet Triangle and Number Triangle C++ Program: Matrix Multiplication C++ Program to Print Fibonacci Triangle Stack in C++ Maps in C++ Queue in C++ C++ Bitset C++ Algorithms Priority Queue in C++ C++ Multimap C++ Deque Function Pointer in C++ Sizeof() Operators in C++ C++ array of Pointers free() Vs delete in C Timsort Implementation Using C++ CPP Templates C++ Aggregation C++ Enumeration C++ Math Functions C++ Object Class C++ Queue Initialize Vector in C++ Vector in C++ C++ STL Components Function overloading in C++ C++ Maximum Index Problem C++ find missing in the second array C++ Program to find the product array puzzle C++ Program To Find Largest Subarray With 0 Sum C++ Program To Move All Zeros To The End Of The Array C++ Program to find the element that occurs once C++ Program to find the largest number formed from an array Constructor Vs Destructor C++ Namespaces C++ OOPs Concept C++ Static C++ Structs C++ Try-Catch C++ User Defined Exceptions C++ Virtual Destructor C++ vs C# Malloc() and new in C++ Palindrome Number Program in C++ Snake Code in C++ Splitting a string in C++ Structure Vs Class in C++ Virtual Function Vs Pure Virtual Function C++ Bidirectional Iterators C++ Forward Iterators C++ Iterators C++ Output Iterators C++ Range-based For Loop Converting string into integer in C++ LCM Program in C++ Type conversion in C++ Add two numbers using the function in C++ Advantage and disadvantage friend function C++ Armstrong Number Program in C++ ATM machine program in C++ using functions Binary to Decimal in C++ Bit Manipulation in C++ C++ Constructor C++ Dijkstra Algorithm Using the Priority Queue C++ int into String C++ Signal Handling Decimal to Binary in C++ Decimal to Hexadecimal in C++ Decimal to Octal in C++ Factorial Program in C++ Function in C++ Hexadecimal to Decimal in C++ Octal to Decimal in C++ Reverse a Number in C++ Structure Vs Class in C++ C++ Forward Iterators C++ Output Iterators C++ Prime number program Char Array to String in C++ Constructor Overloading in C++ Default arguments in C++ Different Ways to Compare Strings in C++ Dynamic Binding in C++ Program to convert infix to postfix expression in C++ SET Data Structure in C++ Upcasting and Downcasting in C++ Reverse an Array in C++ Fast Input and Output in C++ Delete Operator in C++ Copy elision in C++ C++ Date and Time C++ Bitwise XOR Operator Array of sets in C++ Binary Operator Overloading in C++ Binary Search in C++ Implementing the sets without C++ STL containers Scope Resolution Operator in C++ Smart pointers in C++ Types of polymorphism in C++ Exception Handling in C++ vs Java Const Keyword in C++ Type Casting in C++ Static keyword in C++ vs Java Inheritance in C++ vs Java How to concatenate two strings in C++ Programs to Print Pyramid Patterns in C++ swap() function in C++ Structure of C++ Program Stringstream in C++ and its applications rand() and srand() in C / C++ C++ Ternary Operator C++ Scope of Variables While Loop Examples in C++ Star pattern in C++ using For Loops For Loop Examples in C++ Do-While Loop Examples in C++ Top 5 IDEs for C++ That You Should Try Once Assertions in C/C++ C++ Convert Int to String Continue in C++ While loop Diamond Pattern in C++ using For Loop How to Reverse a String in C++ using Do-While Loop How to Reverse a String in C++ using For Loop How to Reverse a String in C++ using While Loop Infinite loop in C++ Loops in C++ Returning Multiple Values from a Function using Tuple and Pair in C++ wcscpy(), wcslen(), wcscmp() Functions in C++ Auto keyword in C++ C++ 11 vs C++ 14 vs C++ 17 C++ STL (Standard Template Library) Differences Between C Structures and C++ Structures Divide by Zero Exception in C++ Dynamic Constructor in C++ Dynamic Memory Allocation in C++ Find the Size of Array in C/C++ without using sizeof() function Floating Point Operations and Associativity in C, C++ and Java Hello World Program in C++ How to create a table in C++ How to Setup Environment for C++ Programming on Mac Implementation of a Falling Matrix in C++ Message Passing in C++ Pointer to Object in C++ Templates in C++ vs Generics in Java Ways to Copy a Vector in C++ What does Buffer Flush mean in C++ sort() function in C++ Structure Sorting (By Multiple Rules) in C++ Similarities between C++ and Java std::distance in C++ Array program in C++ C++ Tricks for Competitive Programming Desired Capabilities in Selenium Web Driver in C++ Socket Programming in C++ Template Specialization in C++ Classes and Objects in C++ Convex hull Algorithm in C++ DES in C++ C++ vardiac() function Difference between Two Sets in C++ Difference between Exit and Return Structured Binding in C++ Differences between Local and Global Variable Bitwise Operator vs Logical Operator Difference between OOP and POP in C++ Fork in C++ Functors in C++ How to call a void function in C++ How to create a directory or folder in C/C++ How to create a library in C++ How to create a stack in C++ How to create the Processes with Fork in C++ How to Handle Divide by Zero Exception in C++ Lambda Expression in C++ Pattern programs in C++ Roadmap to C++ Programming Substring in C++ Virtual base class in C++

C++ Void Pointer

A void pointer is a general purpose pointer that can have an address of any data type but is not related to any data type.

Void Pointer Syntax:

void *ptr;  

We can't assign a variable's address to a variable of a different data type in C++.To better understand this let see an example below:

int *ptr;  //declaration of an integer pointer ptr 
float i=14.6; // initialization of a floating variable i
ptr= &i;  // This statement throws an error.

Explanation:

We define a pointer of type integer, ptr, and a float variable, 'i', in the preceding example. We try to save the address of 'i' variable in 'ptr' after declaration, but this is not feasible in C++ since the variable cannot carry the addresses of various data types.

Another example of a program containing void pointer in C++:

#include <iostream> 
#inlcude <bits/stdc++.h> 
using namespace std; 
int main()  
{  
    int *ptr;  
    float i= 14.6;  
    ptr = &i; // error  
    std::cout << "The value of *ptr is : " <<*ptr<< std::endl;  
    return 0;  
}

OUTPUT:

error: cannot convert ‘float*’ to ‘int*’ in assignment
ptr = &f; //error

Explanation:

In the above program, we define an integer pointer and a float variable. An integer pointer variable cannot point to a float variable, but it can only point to an integer variable. The above problem was solved in C++ by utilizing the void pointer, which may contain the address of any data type.

Another example of a program containing void pointer in C++:

#include <iostream>  
#include <bits/stdc++.h>
using namespace std;  
int main()  
{  
  void *ptr;   // declaration of a void pointer 
  int i=19;   //  initialization of an integer variable
  ptr=&i;   // storing the address of 'i' variable in a void pointer variable ptr.  
  std::cout << &i << std::endl;  
  std::cout << ptr << std::endl;  
  return 0;  
}

OUTPUT:

0x61ff08
0x61ff08
press any key to continue……

Explanation:

We declare void pointer variable and integer variable in the preceding program, which contains the address of void pointer integer variable.

Advantages of Void Pointer in C++

  • Because malloc() and calloc() return the void * type, they may be used to allocate memory of any data type (due to the void *).
  • Normal functions in C are executed using void pointers. For example, in qsort, the compare function is used ().

Important fact: It is not possible to ignore void pointers. The following program, for example, does not compile.

#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
int main()
{	int i = 10;
	void *ptr = &i;
	printf("%d", *ptr);
	return 0;
}

OUTPUT:

Compiler error: 'void*' is not a pointer-to-object type

Following program run fine with the compiler:

#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
int main()
{int i = 20;
void *ptr = &i;
printf("%d", *(int *)ptr);
return 0;
}

OUTPUT:

20



ADVERTISEMENT
ADVERTISEMENT