Pointers and arrays are interchangeable.
#include <stdio.h>
#define MAX_NAME 40
int main( void ) {
int squares[10];
printf( "squares = %p\n", (void *)squares );
printf( "&squares[0] = %p\n", (void *)&squares[0] );
printf( "&squares[1] = %p\n", (void *)&squares[1] );
printf( "&squares[2] = %p\n", (void *)&squares[2] );
printf( "&squares[3] = %p\n", (void *)&squares[3] );
printf( "&squares[437] = %p\n", (void *)&squares[437] );
printf( "&squares[-5150] = %p\n", (void *)&squares[-5150] );
return 0;
}
Note the complete lack of bounds checking.
squares = 0xbffff578 &squares[0] = 0xbffff578 &squares[1] = 0xbffff57c &squares[2] = 0xbffff580 &squares[3] = 0xbffff584 &squares[437] = 0xbffffc4c &squares[-5150] = 0xbfffa500
You don't care what the size of the referents is. The compiler
handles it for you.