少し分からない仕様があるので教えてください。

C言語で変数宣言する場合、
グローバル変数の宣言は、全ての関数定義の前
ローカル変数の宣言は、関数定義中の一番最初
でなければならない、という認識で合っているでしょうか?

もしそうだとすれば、グローバル変数はともかくとして、ローカル変数が途中で定義できないのはソースがとても見辛くなってしまいそうです。