Next: Array Example Call, Previous: Float Example, Up: Beyond Integers [Contents][Index]

A function to take the average of three numbers is very specific and limited. A more general function would take the average of any number of numbers. That requires passing the numbers in an array. An array is an object in memory that contains a series of values of the same data type. This chapter presents the basic concepts and use of arrays through an example; for the full explanation, see Arrays.

Here’s a function definition to take the average of several
floating-point numbers, passed as type `double`

. The first
parameter, `length`

, specifies how many numbers are passed. The
second parameter, `input_data`

, is an array that holds those
numbers.

double avg_of_double (int length, double input_data[]) { double sum = 0; int i; for (i = 0; i < length; i++) sum = sum + input_data[i]; return sum / length; }

This introduces the expression to refer to an element of an array:
`input_data[i]`

means the element at index `i`

in
`input_data`

. The index of the element can be any expression
with an integer value; in this case, the expression is `i`

.
See Accessing Array Elements.

The lowest valid index in an array is 0, *not* 1, and the highest
valid index is one less than the number of elements. (This is known
as *zero-origin indexing*.)

This example also introduces the way to declare that a function
parameter is an array. Such declarations are modeled after the syntax
for an element of the array. Just as `double foo`

declares that
`foo`

is of type `double`

, `double input_data[]`

declares that each element of `input_data`

is of type
`double`

. Therefore, `input_data`

itself has type “array
of `double`

.”

When declaring an array parameter, it’s not necessary to say how long
the array is. In this case, the parameter `input_data`

has no
length information. That’s why the function needs another parameter,
`length`

, for the caller to provide that information to the
function `avg_of_double`

.

Next: Array Example Call, Previous: Float Example, Up: Beyond Integers [Contents][Index]