Рассмотрим (1):
uint8_t *pUART = reinterpret_cast<uint8_t*>(0x0800);
Я знаю (1) просто меняет указатель pUART на 0x0800, но я запутался, как этот способ работает.
Это имело бы смысл, если бы это было (2):
uint8_t* pUART = reinterpret_cast<uint8_t*>(0x0800);
Я в замешательстве, потому что (1) совпадает с (3):
uint8_t x = reinterpret_cast<uint8_t*>(0x0800);
но компилятор не принимает это. Может кто-нибудь прояснить это для меня? Почему (1) работает, а не (3).