Pointers and Functions in C++

Written by

Vaaruni Agarwal

In the previous chapters, we have read about both the topics of pointers as well as the functions in C++. But in this chapter, we are going to learn how these two concepts can be used with one another in C++. Both these topics are of utmost importance and are really fun to use. So let us take a look at them in detail.

Passing pointers to functions:

C++ allows the coder to pass a pointer to a function. To do so, simply declare the function parameter as a pointer type.

#include <iostream>
#include <ctime>

void gS(unsigned long* par); // function declaration

int main()
{
    unsigned long sec;
    gS(&sec);

    // print the actual value
    cout << "Number of seconds: " << sec << endl;

    return 0;
}

void gS(unsigned long* par) // function definition
{
    // get the current number of seconds
    *par = time(NULL);
}

When the above code is compiled and executed, it produces the following result −

Number of seconds: 1294450

In the above example, we pass an unsigned long pointer to a function and change the value inside the function which reflects back in the calling function.

Return Pointers from Functions:

C++ also allows the feature to return pointers from the functions. For this purpose, we use the following 

Syntax:

int *Func_name() {

   .

   .

   .

}

Note: Here we are returning an integer value because, pointers are actually addresses, which are actually numbers themselves.

#include <iostream>
#include <ctime>

// function to generate and return random numbers.
int* getRandom()
{
    static int r[5];

    // set the seed
    srand((unsigned)time(NULL));

    for (int i = 0; i < 5; ++i)
    {
        r[i] = rand();
        cout << r[i] << endl;
    }

    return r;
}

// main function to call above defined function.
int main()
{
    // a pointer to an int.
    int* p;
    p = getRandom();

    for (int i = 0; i < 5; i++)
    {
        cout << "*(p + " << i << ") : ";
        cout << *(p + i) << endl;
    }

    return 0;
}

Output:

672723198

9998735695

804513585

971235677

618989504


*(p + 0): 672723198

*(p + 1): 9998735695

*(p + 2): 804513585

*(p + 3): 971235677

*(p + 4): 618989504
Pointers and Functions in C++