How to return array from function in C++?

How to return array from function in C++

In this article, we will see how to return array from function in C++.

It is not possible to directly return an array to a function call and it can be done by using pointers. If you declare a function with a pointer return type that returns the address of the C-type array, then it will not work all the time in C++. You will get a warning message from the compiler and it can also show some abnormal behaviour in the output.
In this article, we have mentioned five methods to return an array from a function in C++.
[toc]

Using a static array with pointers

We can handle the abnormal behaviour of the normal array by declaring it as static. It is the only way to avoid warnings and unwanted results.
Code:

#include 
using namespace std;

int *joy() //declaring function as a pointer type
{
    static int array[100]; //declaring static array

    //performing operations on the array
    array[0] = 101;
    array[1] = 102;
    array[2] = 103;
    array[3] = 104;
    array[4] = 105;

    return array;
}

int main()
{
    int* pointer = joy();  //function calling

    //printing the elements stored in the array
    cout << pointer[0] << " " << pointer[1]<< " " << pointer[2] << " " << pointer[3];
    return 0;
}

Output:

101 102 103 104

Using dynamically allocated array

Arrays can be dynamically allocated using malloc() or new and they will remain there until we delete them. We will delete the array after coming out of the function.

Code:

#include 
using namespace std;

int *joy() //declaring function as a pointer type
{
    int *array= new int[100]; //dynamically allocating memory

    //performing operations on the array
    array[0] = 101;
    array[1] = 102;
    array[2] = 103;
    array[3] = 104;
    array[4] = 105;

    return array;
}

int main()
{
    int* pointer = joy();  //function calling

    //printing the elements stored in the array
    cout << pointer[0] << " " << pointer[1]<< " " << pointer[2] << " " << pointer[3];
    delete[] pointer;
    return 0;
}

Output:

101 102 103 104

Using structs

We can declare an array inside a structure in C++. We can return an instance of the struct because the elements in the array of structures are copied deeply.

Code:

#include 
using namespace std;

struct java2blog
{
    //Declaring an array inside struct with size 100.
    int arr[100];
};

struct java2blog fun(int n) //Here the return type is struct java2blog
{
    struct java2blog a; //java2blog structure member declared
    for(int i=0;i

Output:

Elements present in the array are : 0 1 2 3 4 5 6 7 8 9

Using std:: array

C++ also offers another choice for returning an array from a function - std:: array. It is a structure template that wraps a regular array and it also provides extra methods like size() & empty(). We can return the array name to return the whole array at the time of the function call. We also need to include the header file ‘array’ to use this method.

Code:

#include 
#include
using namespace std;

array function() //function declared with return type array<>
{
    array arr; //array declared
    int c=0;
    for(int i=0;i<10;i++)
    {
        //filling elements in the array
        arr[i] = c;
        c++;
    }

    return arr; //array returned
}

int main()
{
    array arr; //array with length 10
    arr=function(); //function calling

    cout<<"Elements in the array are: ";
    for(int i=0;i<10;i++)
    {
        cout<

Output:

Elements in the array are: 0 1 2 3 4 5 6 7 8 9

Using vector container

We can store our array elements in a vector container and its size can increase or decrease dynamically. There is no need for a size parameter in this case.

Code:

#include 
#include 
using namespace std;

vector addTenToArray(const vector *arr)
{
    vector vect{};
    for(const auto &items : *arr){
        vect.push_back(items+10);
    }
    return vect;
}
int main()
{
    vector array_vect={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    auto result_array = addTenToArray(&array_vect);

    cout << "Array = [ ";
    for (int i : result_array) {
        cout << i << ", ";
    }
    cout << "]" << endl;
    return 0;
}

Output:

Array = [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ]

Conclusion

In this article, we discussed five different methods to return array from function in C++. Any method can be used as per the requirements.

Happy Learning!!

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.