Passing Arrays to Functions in C++
In C++, you can pass a pointer to an array by specifying the array name without an index.
When passing an array to a function in C++, the array type is automatically converted to a pointer type, thus passing the actual address.
If you want to pass a one-dimensional array as a parameter in a function, you must declare the function formal parameter in one of the following three ways. All three declaration methods yield the same result because each tells the compiler that an integer pointer will be received. Similarly, you can also pass a multi-dimensional array as a formal parameter.
Method 1
The formal parameter is a pointer:
void myFunction(int *param)
{
.
.
.
}
Method 2
The formal parameter is an array of defined size:
void myFunction(int param[10])
{
.
.
.
}
Method 3
The formal parameter is an array of undefined size:
void myFunction(int param[])
{
.
.
.
}
Example
Now, let's look at the following function, which takes an array as a parameter along with another parameter, and returns the average of the elements in the array:
double getAverage(int arr[], int size)
{
int i, sum = 0;
double avg;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = double(sum) / size;
return avg;
}
Now, let's call the above function as follows:
Example
#include <iostream>
using namespace std;
// Function declaration
double getAverage(int arr[], int size);
int main ()
{
// Integer array with 5 elements
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
// Pass a pointer to the array as a parameter
avg = getAverage( balance, 5 ) ;
// Output the returned value
cout << "Average value is: " << avg << endl;
return 0;
}
When the above code is compiled and executed, it produces the following result:
Average value is: 214.4
As you can see, the length of the array is irrelevant to the function because C++ does not perform boundary checks on formal parameters.