Я построил следующие разделы кода, чтобы помочь себе понять разыменование указателя и приведение типов в C.
char a = 'a';
char * b = &a;
int i = (int) *b;
Для вышеизложенного я понимаю, что в 3-й строке я разыменовал b иgot 'a' и (int) приведут значение типа a к соответствующему значению 97, которое сохраняется в i.Но для этого раздела кода:
char a = 'a';
char * b = &a;
int i = *(int *)b;
Это приводит к тому, что я являюсь произвольным большим числом, например, 792351. Я предполагаю, что это адрес памяти, но мой вопрос - почему?Когда я вписываю b в целочисленный указатель, это фактически заставляет b указывать на другую область в памяти?Что происходит?
РЕДАКТИРОВАТЬ : Если вышеупомянутое не работает, то почему бы что-то вроде этой работы:
char a = 'a';
void * b = &a;
char c = *(char *)b;
Это правильно назначает 'a'к.