グローバル変数で

int a = 0;
int *b = &a;
int c = a;

c の初期化は当然エラーなんだけど、b の初期化が何も言われないのは
なんでですかね?
こんなの普通しないってのは分かるんだけど、
どんな仕組みになってるのか気になって。
よかったら教えてくだせえ。