When I was teaching C++ I just explained that it was an "offset" (which in reality it is in C, the location of each element is calculated by adding the offset*sizeof(type) to the pointer address of the array) which seemed to satisfy those asking why arrays start with zero, but are declared by size. Bill