In C, an array (i.e. a variable you index into with a subscript) is actually a more complicated data structure than a primitive variable. An int for example contains the value of an integer. However, an array variable, say theArray, is actually a pointer to the first memory address of the array. When you index into the array, you are conceptually saying go to the memory address of theArray, and move up N locations, where N is your index, and retrieve the value at that address. This is why if you index to a non-existent location in your array you will get a segmentation fault or similar, because the memory location doesn't have any data in it, or it is a null pointer.