Если вы написали следующий код, чтобы немного узнать об указателях и арифметике указателей, что означает переход от смещения к смещению для чтения чего-либо из структуры.У меня есть следующий код
DWORD * x = (DWORD*)((UINT)ptr1 + sizeof(int) + sizeof(float));
float f = *(float*)x;
Этот код работает как следует.Однако я изо всех сил пытался заставить его работать, так как вначале я не приводил ptr1
к UINT
и, следовательно, получал другой адрес, как я хотел.
Теперь это работает.Однако кто-то может объяснить мне, почему я не могу добавить смещение (sizeof...
) к ptr1
напрямую, которое имеет тип DWORD *
?
DWORD * x = (DWORD*)(ptr1 + sizeof(int) + sizeof(float));
float f = *(float*)x;