5

Pass an Array by reference to function in C++

 1 year ago
source link: https://thispointer.com/pass-an-array-by-reference-to-function-in-c/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Pass an Array by reference to function in C++

This tutorial will discuss about a unique way to pass an array by reference to function in C++.

Many times, we encounter a situation, where we need to pass a fixed size array to a function. For that we need to pass two data points in the function,

  • The data type of elements in array.
  • The size of array.

Although, we can pass the array as a pointer, and the size of array as second argument, but that would decay the array to pointer, and therefore that is not the best solution. Instead of that, we will pass the array as a reference without decaying it.

Suppose we have an array,

int arr[5] = {23, 34, 78, 23, 21};
int arr[5] = {23, 34, 78, 23, 21};

Advertisements

00:00/15:21
liveView.php?hash=ozcmPTEznXRiPTEzqzyxX2V2ZW50PTUjJaNypaZypyRcoWU9MTY3ODA1NDx4OSZ2nWRspGkurWVlVzVlPTMhMS4jJaM9MTAkMwx3JaN0YT0jJat9NDUmJax9MmI1JaZcZF9jYXNmRG9gYWyhPXRbnXNjo2yhqGVlLzNioSZmqWJJZD10nGympG9coaRypv5wo20zZGVvqWqJozZipz1uqGyiow1BQyQyMwAyMxYyMwBPozVXRxNuoGjyMwAyMxYyMwA4JTIjJTJGJTIjZGVzYXVfqCZcp0FjpD0jJaNxn3Y9JaJcPTZDNwx3NwY1NTM3NDYkNmQ3MmqDNmM2QwMkN0I1NDMjN0Q3QwY0MmImMDMlMmMlRDMjMmMlRDMjMmY1RwMjMmA3RDqCNmMmMTMlMmMmNDM5MmYmNDM5N0Q3QwQmMmEmNwM2N0Q3QwUmNwQ0NmY4NmA2MmMmNDI3NwYkNTpmNTMjNUE1ODQ5NmU1OTMlMmx3NDqEN0I2MwYmNwt3MwZGNxQ2NTqEN0I3MTY0NwU3MmZCNmQ2RwpjN0Q3QwZGNxM2OTZFNmU3ODqEN0I1ODM0MmUmMmqEN0I1OTMmMmImNTqEN0I2NwMkN0Q3QwplNTE1NTRBNTU0OTQmMmt2NmU0MmImNTZDNTYmMDVBNDQ1OTU3Nmt3MmQ5NDMmODY3NEY0MmQkNmY0OTQ3NTI2QmVBNxQ0NwMkNwI0ODUkM0Q3RDqCNEMmMTMlMmUmMwMkN0RGRUZFJzRcYWyxPSZ1p2VlSXBBZGRlPTIjMDEyM0EkOWYjJTNBNmAjMSUmQTJxZDpyM0E1NDAjJTNBNGZzJTNBZzUjZCUmQTZyOWMzqXNypyVBPU1irzyfoGEyMxY1LwAyMwAyMwuYMTEyM0IyMwBMnW51rCUlMHt4Ny82NCUlOSUlMEFjpGkyV2VvS2y0JTJGNTM3LwM2JTIjJTI4S0uUTUjyMxMyMwBfnWgyJTIjR2Vwn28yMwxyMwBIZWFxoGVmp0Nbpz9gZSUlRwEjMS4jLwQ5NTEhNwQyMwBTYWZupzxyMxY1MmphMmYzY3N1qWyxPTY0MDUkNwQ4OWMjNTMzY29hqGVhqEZcoGVJZD0jJz1yZGyuUGkurUkcp3RJZD0jJz1yZGyuTGymqEyxPTAzZ2Rjpw0jJzqxpHJDo25mZW50PSZcp1qyUGFmp0qxpHI9MSZwY3BuPTAzY2NjYUNioaNyoaQ9JzNvqXN0ZXI9MTY3ODA1NDx5MTp3MlZ1nWQ9U2VenW5xo1NQoGF5ZXI2NDA1MTY0ZDJuNwM5JaB1YyVloD1bqHRjplUmQSUlRvUlRaRbnXNjo2yhqGVlLzNioSUlRaBup3MgYW4gYXJlYXxgYaxgpzVzZXJyozNyLXRiLWZ1ozN0nW9hLWyhLWMyMxYzZzkiYXRTqGF0qXM9ZzFfp2UzZWyxp3A9nWykliveView.php?hash=ozcmPTEznXRiPTEzqzyxX2V2ZW50PTI1JaNypaZypyRcoWU9MTY3ODA1NDx4OSZ2nWRspGkurWVlVzVlPTMhMS4jJaM9MTAkMwx3JaN0YT0jJat9NDUmJax9MmI1JaZcZF9jYXNmRG9gYWyhPXRbnXNjo2yhqGVlLzNioSZmqWJJZD10nGympG9coaRypv5wo20zZGVvqWqJozZipz1uqGyiow1BQyQyMwAyMxYyMwBPozVXRxNuoGjyMwAyMxYyMwA4JTIjJTJGJTIjZGVzYXVfqCZcp0FjpD0jJaNxn3Y9JaVmZXJJpEFxZHI9MwAjMSUmQTE5ZwAyM0E3MDAkJTNBMzRxNlUmQTU0MDAyM0E0ZzYyM0FzZTBxJTNBNzU5YlZ1p2VlVUE9TW96nWkfYSUlRwUhMCUlMCUlOFtkMSUmQvUlMEkcoaV4JTIjrDt2XmY0JTI5JTIjQXBjoGVXZWJLnXQyMxY1MmphMmYyMwAyMwuLSFRNTCUlQlUlMGkcn2UyMwBHZWNeolUlOSUlMEuyYWRfZXNmQ2ulo21yJTJGMTAkLwAhNDx1MS42NCUlMFNuZzFlnSUlRwUmNl4mNvZwp3V1nWQ9NwQjNTE2NDt5YmA1MlZwo250ZW50RzyfZUyxPTAzoWVxnWFQoGF5TGymqEyxPTAzoWVxnWFMnXN0SWQ9MCZxqXI9ODAjJzqxpHI9MCZaZHBlQ29hp2VhqD0znXNXZVBup3NHZHBlPTEzY2NjYT0jJzNwpGFDo25mZW50PSZwYaVmqGVlPTE2NmtjNTQ5OTx4MDEzqWyxPVNyn2yhZG9TUGkurWVlNwQjNTE2NGQlYTYmOSZjqWJVpzj9nHR0pHMyM0EyMxYyMxZ0nGympG9coaRypv5wo20yMxZjYXNmLWFhLWFlpzF5LWJ5LXJyZzVlZW5wZS10ol1zqW5wqGyiov1cov1wJTJGJzZfo2F0U3RuqHVmPWZuoHNyJzVcZHNjPWycpQ==liveView.php?hash=ozcmPTEznXRiPTEzqzyxX2V2ZW50PTI1JaNypaZypyRcoWU9MTY3ODA1NDx4OSZ2nWRspGkurWVlVzVlPTMhMS4jJaM9MTAkMwx3JaN0YT0jJat9NDUmJax9MmI1JaZcZF9jYXNmRG9gYWyhPXRbnXNjo2yhqGVlLzNioSZmqWJJZD10nGympG9coaRypv5wo20zZGVvqWqJozZipz1uqGyiow1BQyQyMwAyMxYyMwBPozVXRxNuoGjyMwAyMxYyMwA4JTIjJTJGJTIjZGVzYXVfqCZcp0FjpD0jJaNxn3Y9JaVmZXJJpEFxZHI9MwAjMSUmQTE5ZwAyM0E3MDAkJTNBMzRxNlUmQTU0MDAyM0E0ZzYyM0FzZTBxJTNBNzU5YlZ1p2VlVUE9TW96nWkfYSUlRwUhMCUlMCUlOFtkMSUmQvUlMEkcoaV4JTIjrDt2XmY0JTI5JTIjQXBjoGVXZWJLnXQyMxY1MmphMmYyMwAyMwuLSFRNTCUlQlUlMGkcn2UyMwBHZWNeolUlOSUlMEuyYWRfZXNmQ2ulo21yJTJGMTAkLwAhNDx1MS42NCUlMFNuZzFlnSUlRwUmNl4mNvZwp3V1nWQ9NwQjNTE2NDt5YmA1MlZwo250ZW50RzyfZUyxPTAzoWVxnWFQoGF5TGymqEyxPTAzoWVxnWFMnXN0SWQ9MCZxqXI9NDpjJzqxpHI9MCZaZHBlQ29hp2VhqD0znXNXZVBup3NHZHBlPTEzY2NjYT0jJzNwpGFDo25mZW50PSZwYaVmqGVlPTE2NmtjNTUjMDQ1MDIzqWyxPVNyn2yhZG9TUGkurWVlNwQjNTE2NGQlYTYmOSZjqWJVpzj9nHR0pHMyM0EyMxYyMxZ0nGympG9coaRypv5wo20yMxZjYXNmLWFhLWFlpzF5LWJ5LXJyZzVlZW5wZS10ol1zqW5wqGyiov1cov1wJTJGJzZfo2F0U3RuqHVmPWZuoHNyJzVcZHNjPWycpQ==

Now we want this array to a function as a reference. For that we need to provide the array information in the function declaration, like this,

template <typename T, size_t size>
void display(T (&arr)[size])
// some code
template <typename T, size_t size>
void display(T (&arr)[size])
{
    // some code
}

Here, we passed the data type and size of array as template parameters, which will be automatically deduced from the argument. The signature T (&arr)[size], tells the function that the incoming parameter is an array of type T, and the size of array is the second template parameter size. Let’s see an example, where we will pass an array in a function as a reference, and print each value of array.

Let’s see the complete example,

#include <iostream>
// Pass an Array by reference to a function
template <typename T, size_t size>
void display(T (&arr)[size])
// print the contents of array
for(int i = 0; i < size; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
int main()
int arr[5] = {23, 34, 78, 23, 21};
// Pass an array by reference in function
display(arr);
return 0;
#include <iostream>

// Pass an Array by reference to a function
template <typename T, size_t size>
void display(T (&arr)[size])
{
    // print the contents of array
    for(int i = 0; i < size; i++)
    {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main()
{
    int arr[5] = {23, 34, 78, 23, 21};

    // Pass an array by reference in function
    display(arr);

    return 0;
}

Output :

23 34 78 23 21
23 34 78 23 21

Summary

Today we learned about several ways to pass an array by reference to function in C++. Thanks.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK