>>388
C++なら
template <int N>
void fun(int (&x)[N})

と宣言すれば

s=sizeof(x)/sizeof(x[0]);

が使えるが、Cでは配列は必ずポインタに変換されてしまうため
配列の大きさに関する情報は失われてしまう。

通常
void fun(int *x, int n)
と、別のパラメータで大きさを渡す。