Цитата(Метценгерштейн @ Nov 12 2014, 13:44)

объявил указатель и хочу в него записать число, но ругается при компиляции. Почему я не могу в переменную сразу записать значение?
Код
uint32_t *p;
p = 0x40023800 + 0x1C;
ругаться перестает, когда сначала приведу к типу
Код
uint32_t *p;
p = (uint32_t *)0x40023800 + 0x1C;
Потому что так устроена адресная арифметика.
Во первых, 0x40023800 и0x1C это просто числа. Откуда видно, что это указатели? Да даже если это и были указатели, то неизвестно, объект какого размера расположен по адресу 0x40023800 или по адресу 0x1C.