1)
if i got
int tab[10][10];
what type has tab[1] ? is this an 10-int array of
{ tab[1][0], tab[1][1], ... tab[1][9] } ?
2) what is the way or recast one dimensional array into two dimensional, say i got
int tab1[100];
and want to 'recast' it into
int tab2[10][10];
1. tab[1] is the same type as tab[0] - they are both arrays of 10 ints. As arrays of ints, they are also usable as pointers to ints without casting.
2.
int tab1[100];
int (*tab2)[10] = (int (*)[10])tab1;
Note that you have to know the 10 at compile time, which means you'll probably still find yourself using (10*y + x) whenever you need something with a dynamic size (I need dynamic sizing more often than not). I've used this cast when working on arrays full of vectors or triangles or other objects which were just some number of floats each, stored as some type I didn't want to deal with.