# Function Pointers in C++ - With an Example

## 1. What is Function pointer?

You can pass a function as a parameter to some other function. The function's starting instruction can be represented as an address which comes from * "Code Segment"*. So, C++ can admit storing that address in a pointer variable and thereby allow us to call the function using that stored pointer which is pointing to a function. Here we call this pointer as

*.*

**"Function Pointer"**In this example, we are going to write two functions. One will perform the square of given number and the other one will perform cubic of a given number. Then, we will pass these functions as arguments to some other function. The receiving function will make a call to those function by making use of the passed in function pointers.

## 2. Code Example for Function Pointer

The code for passing the function as a parameter is given below. First, go through this code and look at the next section for the explanation of the code flow and function pointer.

// TestIt.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "conio.h" //Sample 01: Function that performs Square long Square_it(long x) { return (x * x); } //Sample 02: Function that perform Cube long Cube_it(long x) { return (x * x * x); } //Sample 03: Function that Take function pointer long summation(long summationFn(long), int n) { int sum = 0; for(int i=1; i<=n; i++) sum = sum + summationFn(i); return sum; } int _tmain(int argc, _TCHAR* argv[]) { int total = 0; //Sample 04: Calculate Square summation upto 4 total = summation(Square_it, 4); printf("Square Summation upto 4= %ld\r\n", total); //Sample 05: Calculate Cubic Summation upto 4 total = summation(Cube_it, 4); printf("Cube Summation upto 4 = %ld\r\n", total); getch(); return 0; }

## 3. Explanation

- The functions
*Square_it*,*Cube_it*will calculate the Square and cubic of any given numbers. - The function summation will take the first parameter as a function pointer. Here, the function pointer passed as a parameter is expected to be taking a long as a parameter and returning long to the caller. The second parameter for the summation function tells where we want to end the
*summation*series. Have a look at the syntax of specifying the function pointer as a parameter. - The summation function will call the passed-in function for ānā number of times by passing the number that increment from 1 to n.
- In the program main, we called the summation function twice. For the first time, we passed the address of the
*square_it*function. And in the second time, we passed the cube_it function as the first parameter. The result we get in the main function is the Square summation from 1 to 4 and cubic summation from 1 to 4.

Result of running the program is shown below:

## Pic01

## Comments

No comments yet.