Q:

What about 2D-array indexes in C? 

I'm new in C programing and I need to use a 2D integer array (a matrix).  For example, I do this:
void main(){
   int matrix[2][2] = { {0,1}, {2,3} };
   printf("%i", matrix[4][4]); /*Here should be an index error, but that doesn't happen*/
}

What is wrong? 

A:

What is wrong? 

What is wrong is your assumption about the compiler and/or the language.  C has no bounds checking.  The compiler won't warn you if you are accessing an array out of bounds. 
What happens instead: your code is now invalid, it is said to invoke undefined behavior, and it's free to do anything it wants (including crashing or seemingly "working fine").