配列の宣言時にはその要素数を明示的にする必要がありますよね?

int a[5]; ○
int a[ ] = {1, 2, 3, 4, 5}; ○
int a[ ] ; ×
int a[ ] = {};×

では関数へ引数として配列を渡す場合にはなぜ

int a[ ];

のようなことが許されるのでしょう?