Похоже, это взято прямо из домашней работы или учебника.Когда вы объявляете указатель на символ b, ему по умолчанию не присваивается адрес памяти (на который он указывает), он просто содержит все, что было в ячейке памяти заранее.Это означает, что если вы попытаетесь работать со значением (* b = '2' или printf), он попытается прочитать эту случайную информацию, оставшуюся в памяти, как адрес и найти символ по этому адресу.Это может привести к ошибке сегментации или, если вам не повезет, он будет извлекать мусор из памяти и использовать его в качестве значения char.
Решением будет создание переменной char (char a) и установкауказатель на местоположение a (b = & a).
Надеюсь, это поможет, и удачи в учебе.