No, C actually has the concept of a traditional array hidden in it. Consider:
float a[3][4], *b = a;
(Your compiler won't like that assignment to b!)
and try saying a[1][2] versus b[1][2], and so forth.
Also take a look at sizeof(a)
C understands types, including multi-dimensional arrays. It has for a long, long time.
Arrays and pointers intersect in C, but are not identical.