Вот проблема:
p = (char *) 66;
Должно быть:
*p = 66;
p
- это указатель на char
, поэтому вы не можете присвоить ему значения типа 66
. Вы можете разыменовать p
, чтобы присвоить значения тому, куда «смотрит» указатель.
Если вы хотите напечатать значение, на которое указывает p
, вы должны снова использовать оператор разыменования (*
), например:
printf("%d", *p); // prints the value where p points to
Если вы хотите напечатать адрес указателя, вы можете сделать это:
printf("%p", p); // prints the address where p points