Arrays in C++ (and most other programming languages) are not indexed in the same way as you count in "human languages" where you go "1, 2, 3, ..."
In arrays, your index specifies an offset from the "bottom", and each index specifies a number of spaces to move to the next - so the first item in the array is at index 0, teh second at index 1, and so on.
If you think of a pointer which points at the start of the array, the each actual element is located at
address = start + (index * elementWidth)
where the element width is in bytes - so an array of integers would have an element width of 4 (32 bits wide), an array of doubles would be 8, and a string (array of characters) would be 1.
So as Member 15168018 said, a three by three array will have elements at
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
And you will get an error if you try to use 3 for either index.