Why can\'t you declare a 2D array argument in a function as you do with a normal array?
void F(int bar[]){} //Ok void Fo(int bar[][]) //Not ok void Foo(in
Because when you pass an array, it decays to a pointer, so excluding the outer-most dimension is ok and that's the only dimension you can exclude.
void Foo(int bar[][SIZE])
is equivalent to:
void Foo(int (*bar)[SIZE])