Because the function needs to process the data the array contains.
When you call a function, you pass it a copy of the parameter - this is called "pass by value".
In the case of an integer, a copy of the integer is passed:
int Double(int x) { return x * 2; }
...
int a = Double(666);
int b = Double(a);
The function doesn't to be changed to process the different results.
But what if I want to process an unknown number of integers? I can't write a different function for each possible number of parameters you might need - so we pass an array of integers instead:
int Sum (int arr[], int count)
{
int tot = 0;
for (int i = 0; i < count; i++)
{
tot += arr[i];
}
return tot;
}
Now I can call it with any array of integers I want:
int a[5] = {1, 2, 3, 4, 5};
int b[3] = {101; 201; 301};
int x = Sum(a, 5);
int y = Sum(b, 3);
Make sense?