Next: Variations for Array Example, Previous: An Example with Arrays, Up: Beyond Integers [Contents][Index]
To call the function avg_of_double
requires making an
array and then passing it as an argument. Here is an example.
{ /* The array of values to average. */ double nums_to_average[5]; /* The average, once we compute it. */ double average; /* Fill in elements ofnums_to_average
. */ nums_to_average[0] = 58.7; nums_to_average[1] = 5.1; nums_to_average[2] = 7.7; nums_to_average[3] = 105.2; nums_to_average[4] = -3.14159; average = avg_of_double (5, nums_to_average); /* …now make use ofaverage
… */ }
This shows an array subscripting expression again, this time on the left side of an assignment, storing a value into an element of an array.
It also shows how to declare a local variable that is an array:
double nums_to_average[5];
. Since this declaration allocates the
space for the array, it needs to know the array’s length. You can
specify the length with any expression whose value is an integer, but
in this declaration the length is a constant, the integer 5.
The name of the array, when used by itself as an expression, stands
for the address of the array’s data, and that’s what gets passed to
the function avg_of_double
in avg_of_double (5,
nums_to_average)
.
We can make the code easier to maintain by avoiding the need to write
5, the array length, when calling avg_of_double
. That way, if
we change the array to include more elements, we won’t have to change
that call. One way to do this is with the sizeof
operator:
average = avg_of_double ((sizeof (nums_to_average) / sizeof (nums_to_average[0])), nums_to_average);
This computes the number of elements in nums_to_average
by dividing
its total size by the size of one element. See Type Size, for more
details of using sizeof
.
We don’t show in this example what happens after storing the result of
avg_of_double
in the variable average
. Presumably
more code would follow that uses that result somehow. (Why compute
the average and not use it?) But that isn’t part of this topic.
Next: Variations for Array Example, Previous: An Example with Arrays, Up: Beyond Integers [Contents][Index]