EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

C++ Void Pointer

By Priya PedamkarPriya Pedamkar

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » C++ Void Pointer

C++ Void Pointer

Introduction to C++ Void Pointer

The void pointer in C++ is a pointer actually that has no data type associated with it. This void pointer can hold the address of any data type and it can be typecast to any data type. While we are talking about void pointer we got a doubt size for memory allocation. The void pointer size varied from system to system. If the system configuration is 16 bit then the size of the void pointer is 2 bytes. If the system configuration is 32 bit then the size of the void pointer is 4 bytes and if the system configuration is 64 bit then the size of the void pointer becomes 8 bytes.

The void pointer does not mean that it points to nothing. But we don’t know the exact type of the object it is pointing to, it will point to something.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Void pointer(*) type memory allocated by using malloc() and calloc() functions.

Note: Make sure that void pointer cannot all know what type of object it is referring to or pointing to, so it means if we are trying to deference the void pointer directly then it will result into compile-time error, so before dereferencing the void pointer object we must explicitly cast the void pointer to another pointer type.

Syntax for dereferencing

int a = 10;
void *ptr = &a; // pointer holds the address of the "a" variable
cout << (*(int *)ptr); //dereference the void pointer
malloc() Syntax:
void* malloc(sizesizeBytes);
calloc() Syntax:
void* calloc(size num, size sizeBytes);

How does the void pointer used in C++?

This void pointer used with * operator before of void keyword.

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (5,213 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

Syntax:

int A=12;
void *pointer=&a;// pointer holds the address of the "A" variable

Examples of C++ Void Pointer

Here are the following examples mention below:

Example #1 – Void pointer for int, float, and String

Code: VoidPointer.cpp

//including c++ input and output libraries
#include <iostream>
using namespace std;
//creating enum class
enum DataTypeConstants  {
STRING,
FLOAT,
INT,
};
//called showMyVoidPointer for method implementation
//void *pointer is void pointer
void showMyVoidPointer(void *pointer, DataTypeConstants dTypes)  {
//checking whether we got int or float or string type with switch case
switch (dTypes)  {
case INT:
cout << "Employee ID is: "<<*(int*)pointer << endl;
break;
case FLOAT:
cout << "My Salary is: "<<*(float*)pointer<< endl;
break;
case STRING:
cout << (char*)pointer << endl;
break;
}
}
//main method for run the c++ application
int main()
{
//declaring and initializing the int variable
int empID = 2452;
//declaring and initializing the float variable
float salary = 48000.00;
//declaring and initializing the string variable
char *charValue ="Hi, I am Paramesh";
//calling showMyVoidPointer method for int value
showMyVoidPointer(&empID, INT);
//calling showMyVoidPointer method for float value
showMyVoidPointer(&salary, FLOAT);
//calling showMyVoidPointer method for String value
showMyVoidPointer(charValue, STRING);
return 0;
}

Output:

C++ Void Pointer output 1

Example #2 – Trying to convert the void pointer to constant

Code: VoidPointerConstant.cpp

//including c++ input and output libraries
#include <iostream>
//main method for run the c++ application
int main()
{
//declaring and initializing the int variable
int first;
//declaring and initializing the int pointer
int *pointerFirst = 0;
//declaring and initializing the int pointer
char *pointerSecond = 0;
//declaring the void pointer
void *pointerVoid;
//initializing void pointer to int
pointerVoid = pointerFirst;
//initializing void pointer to int
pointerVoid = pointerSecond;
const int *pointerConst = &first;
pointerVoid = pointerConst;   //trying to assign void pointer to constant, it is not possible so we got error
return 0;
}

Output:

C++ Void Pointer output 2

Example #3 – Pointer to void

Code: PointerVoid.cpp

//including c++ input and output libraries
#include <iostream>
using namespace std;
//main method for run c++ application
int main() {
//declaring void pointer
void* pointer;
//declaring and initializing float variable
float money = 55.50;
//nitializing vooid pointer variable
pointer = &money; // converting float to void ponter
//displaying output
cout <<&money << endl;//displayed money address, it may varied from system to system
//displaying output
cout << pointer <<endl;//displayed pointer address, it may varied from system to system
return 0;
}

Output:

output 3

Example #4 – Memory allocation with malloc method

Code: MemoryAllocationMalloc.cpp

//including c++ input and output libraries
#include <iostream>
//including c++ std libraries
#include <cstdlib>
using namespace std;
//main method for run c++ application
int main()
{
//declaring void pointer
int *pointer;
//allocating Memory for pointer by using malloc() method
pointer = (int*) malloc(10*sizeof(int));
//checking whether pointer existed or not
if(!pointer)
{
cout << "Memory Allocation Failed";
exit(1);
}
//display some static content
cout << "Allocating Memory values......" << endl << endl;
//iterating pointer values
for (int var=0; var<5; var++)
{
pointer[var] = var*2+2;
}
cout << "Memory values are--->" << endl;
//iterating pointer values
for (int var=0; var<5; var++)
{
cout << *(pointer+var) << endl;
}
//free the pointer Memory
free(pointer);
return 0;
}

Output:

output 4

Conclusion

C++ void pointer is used to store the address of any other data type. Void pointer is declared with void*. We can’t dereference the void pointer without reassigning this pointer to another variable type.

Recommended Articles

This is a guide to C++ Void Pointer. Here we discuss the introduction to C++ Void Pointer along with  syntax for dereferencing and programming examples. You may also have a look at the following articles to learn more –

  1. C++ Vector Sort
  2.  Insertion Sort in C++
  3. String in C++
  4. Anagram in C++

C++ Training (4 Courses, 5 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ getline()
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ pair
    • C++ this
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
    • C++ QuickSort
    • Sort string C++
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • C++ Expression
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 5 Projects, 4 Quizzes) Learn More