EDUCBA

EDUCBA

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

Function Pointer in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Function Pointer in C++

Function Pointer in C++

Introduction to Function Pointer in C++

Function pointer in C++ is a variable that stores the address of a function. We know that a pointer is a variable that stores the address of another variable, similarly function pointer stores the address of a function which can later be called through the function pointer and even we can pass the variable or pointer as a parameter to the function through a function pointer. Even the function pointer can pass as an argument and also can be returned from another function. The applications of function pointer are callbacks, in the event-driven application, storing functions in an array, etc.

The function pointer points to code, not data of the function. It stores the start address of executable code.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Syntax of Function Pointer in C++

The following is the syntax for the declaration, initialization, and call of a function pointer.

void myFunc(int x)
{
//some code of myFun() function
}
int main()
{
//declare function pointer
void (*funcPtr)(int);
/*Initialize function pointer(which stores the address of myFunc function)*/
funcPtr = &myFunc;
//call myFunc(note that no need to call (*foo)(2))
funcPtr( 4 );
//also can be called as
(*funcPtr)( 4 );
return 0;
}

An in above syntax the function is declared. We know that function is not simple as variable, so function pointers have parameter list and return type as function. As in the above syntax for declaration “void (*funPtr)(int);”, first we provide the return type, and then pointer name(as funcPtr) enclosed by the brackets which proceed by the pointer symbol(*). And, then provide the list of the parameter as (int).

As in above syntax for initialization is “funcPtr = &myFunc;”, the function pointer(funcPtr) is initialize by the address of function(myFun).

As in above syntax to call function is “funcPtr( 4 );” or “(*funcPtr)( 4 );”, where the function pointer(funcPtr) is call as funcPtr(4) and pass the parameter 4.

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 (4,882 ratings)
Course Price

View Course

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

Working and Examples of the Function Pointer in C++

Next, we write the C++ code to understand the function pointer working more clearly with the following example where we use function pointer to call a function indirectly through the pointer, as below –

Example #1

Code:

#include<stdio.h>
#include<iostream>
using namespace std;
void square(int x)
{
cout<<"The square of a number is "<<x*x<<endl;
}
int main()
{
// declare funPtr pointer
void (*funPtr)(int);
// initialize funPtr pointer
funPtr = &square;
// the above two line is equivalent to void (*fun_ptr)(int) = &fun;
funPtr(20);
return 0;
}

Output:

Function Pointer in C++ output 1

As in the above code, the function pointer is declared, as void (*funPtr)(int) and then initialize by storing the address of the square() function in funPtr, which means funPtr is pointing to function square(). So, by using the funPtr(function pointer) we can call to square function as in code funPtr(20).

Next, we write the C++ code to understand the function pointer working more clearly where we use function pointer to point or store the address of the function and call a function trough function pointer by another way as not above, as below –

Example #2

Code:

#include<stdio.h>
#include<iostream>
using namespace std;
void square(int x)
{
cout<<"The square of a number is "<<x*x<<endl;
}
int main()
{
// declare funPtr pointer
void (*funPtr)(int);
// initialize funPtr pointer
funPtr = &square;
cout<<"The address of square function is ="<<&square<<endl;
cout<<"The function pinter funPtr=&square pointing to ="<<funPtr<<endl;
//also initialize as
funPtr = square;
cout<<"The function pinter funptr=square pointing to ="<<funPtr<<endl;
funPtr(20);
return 0;
}

Output:

Function Pointer in C++ output 2

As in the above code, the address of a square() function is displaying. The address of a square() function printing as mention the name of the function proceed by & and also printed by the function pointer. If we see in the output, both addresses are the same. Therefore the funPtr is pointing to square() function.

Next, we write the C++ code to understand the function pointer working more clearly where we use function pointer to point a function and call a function by passing the array trough function pointer, as below –

Example #3

Code:

#include<stdio.h>
#include<iostream>
using namespace std;
void disp(char *str)
{
cout << "Your Name is :" <<str<< endl;
}
int main()
{
char array[50];
// declare funPtr pointer
void (*funPtr)(char*);
// initialize funPtr pointer
funPtr = &disp;
cout<<"Enter Your Name : "<<endl;
cin>>array;
funPtr(array);
return 0;
}

Output:

output 3

As in the above code, the disp() function is defined which accepts the parameter as char pointer. In main() function the function pointer funPtr is declare as “void (*funPtr)(char*)” and assign the address of disp() function as  funPtr=&disp. So, by using the funPtr we can call to disp() function as in code funPtr(array) and pass the array as a parameter.

Next, we write the C++ code to understand the function pointer working more clearly where we use function pointer to point a function and call a function by Passing a function pointer as a parameter, as below –

Example #4

Code:

#include<stdio.h>
#include<iostream>
using namespace std;
void dispFun(char *str)
{
cout << "Your Name is :" <<str<< endl;
}
void disp(void (*funPtr)(char*)) // declare funPtr pointer and initialize funptr
{
char array[50];
cout<<"Enter Your Name : "<<endl;
cin>>array;
funPtr(array);
}
int main()
{
disp(dispFun);
return 0;
}

Output:

output 4

As in the above code, the two function are define, the dispFun() function is define which accepts the parameter as char pointer and the disp() function which accept function pointer that is funPtr  as “void disp(void (*funPtr)(char*))”. In main() function the disp() function is calling as “disp(dispFun)”, which means the address of dispFun() function is assign or pass to funPtr function pointer parameter.

Conclusion

The function pointer in C++ is a variable that can be used to stores the address of a function and when the function needs to be called we can call indirectly through the function pointer.

Recommended Articles

This is a guide to Function Pointer in C++. Here we discuss the working and examples of the Function Pointer in C++ along with the programming examples. You may also have a look at the following articles to learn more –

  1.  Insertion Sort in C++
  2. Macros in C++ 
  3. C++ Struct Constructor
  4. Selection Sort 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++ 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++ 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++
  • 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
    • 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
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 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

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