[Edit]
As whiteflags says, a lot of opinions exists on teaching C and teaching programming with C; I'm only expressing my opinion from my experience teaching and not intending to claim a fact.
[/Edit]
O_o
Well, this is going to be one of those controversial things, but I'd recommend teaching pointers--as in pointers to single objects--before touching arrays.
Yes. As said, arrays are pretty much the simplest data structure, but you don't have to jump to linked lists--as is so common--just to introduce the need for, reason behind, and use of pointers.
Code:
void Add(int * sum, int augend, int addend);
// ...
int main()
{
int sum;
Add(&sum, 1, 1);
}
If you can get a new student past the indirection hump, the treatment of arrays as decaying to pointers is a far easier concept to understand.
The mechanics of indirection is best served exactly after the introduction of "user defined functions" (I am assuming that some "standard functions"--specifically `printf'--are taught before introducing "user defined functions".) and just before `scanf'.
Soma