Если вы придерживаетесь причины, а не решения (которое вы уже знаете) - при объявлении переменной ничего не происходит.Только когда вы назначаете что-то, компилятор резервирует пространство памяти и все.
Поэтому попытка получить доступ к переменной, которая еще не инициализирована, недопустима, потому что в памяти машины нет места, куда можно перейти ... нет ничегопока что.
Это все равно что пытаться поднять ведро, которого там нет: это не пустое ведро ... это не полное ведро ... нет ведра, которое можно поднять.