C言語のソースで、こんなの↓見ました。

int AAA(st)
   STR_BB *st;
{
  long CCC();
  int ddd = OK;

  処理...

return( ddd );
}

これってなんですか?
int型のint AAAっていう関数を、仮引数 st を取るものとして作ってる??
その後の
   STR_BB *st;
は一体何・・??

  int ddd = OK;

は int型の変数dddなのに、何故、「OK」を代入してる??
分からないことだらけです!教えてください!