C Passing Arrays to Functions

C Arrays

If you want to pass a one-dimensional array as an argument in a function, you must declare the function formal parameter in one of the following three ways. The results of these three declaration methods are the same, because each method 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

A formal parameter is a pointer (you can learn about pointers in the next chapter):

void myFunction(int *param) { . . . }

Method 2

A formal parameter is an array with a defined size:

void myFunction(int param[10]) { . . . }

Method 3

A formal parameter is an array with an undefined size:

void myFunction(int param[]) { . . . }

Example

Now, let's look at the following function, which takes an array as a parameter and also passes another parameter. Based on the parameter passed, it returns the average of the elements in the array:

double getAverage(int arr[], int size) { int i; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }

Now, let's call the above function as follows:

Example

#include <stdio.h> /*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 return value*/ printf( "The average is: %f", avg ); return 0; } double getAverage(int arr[], int size) { int i; double avg; double sum=0; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }

When the above code is compiled and executed, it produces the following results:

平均值是: 214.400000

As you can see, as far as the function is concerned, the length of the array is irrelevant, because C does not perform bounds checking on formal parameters.

C Arrays

other extensions