In keeping with C's free-wheeling, "I assume you know what you're
doing" policy, the compiler does not complain if you try to write to
elements of an array that do not exist. For example, the code below
defines an array with four elements.
Given the line of code below, your program will happily try to write the
* at location 10000. Unfortunately, as may happen when
writing to an uninitialized pointer, this may crash the program, but
will probably do nothing worse on a GNU system. (See Pointers and initialization.)
my_array = '*';
The first and last positions in an array are called its bounds. Remember that the bounds of an array are zero and the integer that equals the number of elements it contains, minus one.
Although C will not warn you at compile-time when you exceed the bounds of an array, the debugger can tell you at run-time. See Introduction to GDB, for more information.