Цитата(demiurg_spb @ Aug 25 2011, 08:32)

Похоже он в первом случае возвращает размер указателя. Неожиданно...
Так функции никогда массив не принимали, только указатель на него, просто таким образом описанный.
Прототип Вашей функции с точки зрения компилятора --
void show_size(float (*a)[3]);, т.е. функция принимает указатель на массивы float[3]
Цитата(sergeeff @ Aug 25 2011, 08:53)

если вы объявите массив в одном модуле, в другом модуле вы уже не будете знать его размеров.
Ну это смотря как описать его в include-файле либо по месту.
Если никак, то он вообще не будет виден в других модулях.
Если
Код
extern float a[][3];
то размер массива будет неизвестен, информация только о размере подмассива.
Если
Код
extern float a[3][3];
то размер будет виден.