We can pass an array (one, two or multidimensional) as an argument to a function. The C language allows us to define functions that have one or more arrays as parameters. These parameters can be of different types and sizes. Moreover, we can mix scalar and array parameters. A function that uses a single one-dimensional array as a parameter can be defined as shown below.
ret_type func_name ( arr_type arr_name [ ]) { ......... }
where parameter arr_name is a one-dimensional array of type arr_type. Note that the array size is not required in the above definition and is usually omitted. A call to this function takes the following form:
func_name ( arr )
where arr is a one-dimensional array. Although, we can pass arrays of different sizes to this function, the function body will process a fixed number of elements from these arrays. We can generalize this function to process an array of any size by including another function parameter that specifies the number of elements to be processed from the array as:
ret_type func_name ( arr_type arr_name [ ] , int n ) { ......... }
Such a function usually processes n elements in the beginning of the array (i. e., elements at positions 0 to n – 1). If we wish to process an arbitrary range of elements, we can specify the range using two function parameters, say first and last.
Recall that call by value is the default mechanism for passing parameters in C language. When a function is called, the argument specified in the function call is copied to the corresponding function parameter specified in the function definition. The overhead of this copy operation would be substantial when an array of moderate to large size is being passed to a function. Hence, C language uses the call by reference mechanism to pass arrays efficiently. In this method, only the starting address of array argument (address of element 0) is passed to a called function.
The use of pass by reference makes an array parameter an input-output parameter. When the function modifies the elements of a parameter array, it actually modifies the elements of an argument array in the called function. Thus, the modified array is available in the calling function. This ability is extremely useful when we want to return the modified array to the calling function, e. g., read an array using a function, sort a given array, etc.
Finally, note that C language does not permit an array to be specified as a return type for a function.
Illustrates passing of an array to a function
#include<stdio.h> double Average(int Array[10]); //function prototype int main() { int Dal[]= {1,2,3,4,5,6,7,8,9,10}; //array clrscr(); printf("Average of Array Element is : %5.3f\n",Average (Dal)); return 0; } double Average (int AR [10]) { // definition of function int i; double Sum =0; for( i =0; i<10; i++) Sum +=AR[i]; return Sum/10; }