struct Foo { ...... }; ←構造体定義
struct Foo a; ←構造体宣言
void func( struct Foo *f ); ←関数の引数に使う場合

ただ、構造体定義のとこで
typedef struct Foo { ...... };
ってやっちゃうことが良くあるんでないかな。そうすれば、宣言や引数のときに「struct」を省略できる。