Typedef for Function Pointer in C++

Muhammad Zohaib Oct 12, 2023
  1. the typedef Keyword
  2. typedef With Function Pointer
Typedef for Function Pointer in C++

This article will explain the purpose of typedef in C/C++. We will further discuss how we can use typedef with a function pointer and what are the benefits of using it.

Let’s discuss typedef and its common use first.

the typedef Keyword

typedef stands for type definition. As the name suggests, typedef is a way of assigning a new name to an existing data type, the type of a variable.

For example, if you want to store an integer variable, the data type will be int. Similarly, the char or string data type is used for a word or phrase.

#include <iostream>
#include <string>
using namespace std;

int main() {
  int a = 10;
  string greeting = "Hello!";
  return 0;
}

With the help of typedef, you may detach yourself from the actual types being used and concentrate more on the idea of what a variable should signify. This makes writing clean code simpler, but it also makes editing your code much simpler.

For example, if you are recording the statements of three different players after a cricket match, then typedef can be used.

#include <iostream>
using namespace std;

int main() {
  typedef char* statement;
  statement PlayerA = "I played bad";
  statement PlayerB = "I played very well";
  statement PlayerC = " I could not get the chance to Bat";
  cout << "Player A said:" << PlayerA;
  return 0;
}

In the above code, char* is a character pointer on which we have applied the typedef keyword for changing this data type with the new name statement. This new alias is more meaningful in this case since we are recording the players’ statements.

Hence, the typedef enhances the code readability.

The typedef can also be used with function pointers. Before jumping into that, let us briefly introduce function pointers.

Function Pointers

In C++, pointers are variables that hold the memory address of a variable. Similarly, a function pointer is a pointer that holds the address of a function.

A function pointer can be declared with the following code:

int (*point_func)(int, int);

In the above code, point_func is a pointer that points to a function having two integer variables as arguments and int as the return type.

typedef With Function Pointer

The syntax looks somehow odd for typedef with a function pointer. You only need to put the typedef keyword at the start of the function pointer declaration.

typedef int (*point_func)(int, int);

The above command means you defined a new type with the name point_func (a function pointer that takes two int arguments and returns an integer, i.e., int (*) (int, int)). Now you can use this new name for pointers declaration.

Let’s look at the following programming example:

#include <iostream>
using namespace std;

int abc(int x1, int x2) { return (x1 * x2); }
int main() {
  typedef int (*pair_func)(int, int);
  pair_func PairProduct;  // PairProduct is pointer of type pair_func
  PairProduct = &abc;  // PairProduct pointer holds the address of function abc
  int product = (*PairProduct)(20, 5);
  cout << "The product of the pair is: " << product;
  return 0;
}

Output:

The product of the pair is: 100

It is clear up to this point what typedef does if it is used before the function pointer. The abc function takes two arguments and returns their product in the above code.

In the main function, we used typedef to define a new name for the function pointer (i.e., pair_func). Then, we defined the PairProduct of type pair_func and assigned the function abc address.

After that, we called the function abc by dereferencing the pointer PairProduct (simpler syntax) and passing two arguments.