The way we've been using strings with
suggests that we might be able to pass arrays as arguments to
And indeed we can.
In particular if we want to pass an entire array as an argument, then
we just put the array's name.
For example, we might have an array like:
and we could pass it to a function like this:
x = average(samples, num_samp);
We can also pass just a row of a two-dimensional array.
The way to think about this is that a two-dimensional array is just
an array of arrays.
So we want to pass just one of those arrays.
for(i = 0; i < num_stud; ++i)
where the names array is declared as:
In other words, the name of a row of a two-dimensional array is the
whole array name along with one index.
Being able to pass arrays as arguments is fine, but for it to be useful,
we need to be able to declare functions that take arrays as
We'll illustrate how by writing the averaging function we used
float average(float nums, int n)
sum = 0.0;
for(i = 0; i < n; ++i)
sum += nums[i];
return sum / n;
Here we see that to receive an argument that is an array, we need
to give the type of elements the array contains, a formal name
for the array and a set of square brackets.
C will ignore any value we put there because it doesn't care.
(Why it doesn't care is something that will have to be left for
a later time.)
Normally, then, we don't put anything there.
(There is another equivalent syntax for this, but we don't need that
As another example the prototype for the process student function
might look like:
void process_student(char name);
Notice that in each case we give the single set of empty brackets
for the declaration of the formal parameter even though in one
case we're passing a whole one-dimensional array and in the other
we're passing one row of a two-dimensional array.
This again underscores the fact that a two-dimensional array is just
an array of arrays and when we refer to one row of it, we are
referring to a one-dimensional array.
It is possible to pass and receive two and greater dimensional arrays,
but that involves one of the more subtle aspects of the C language
so here we will simply say now that it can be done, but leave how to
a later date.