Прямой доступ к памяти - C (СИ)
Формулировка задачи:
Подскажите как сделать чтобы функция ChangeId меняла член структуры,
я рассматриваю что после padding в структуре следующая структура памяти 4байта дата, 1байт айди и следующие три пустые
typedef struct {
uint32_t data;
uint8_t id;
}TDateTime_t;
void ChangeData(TDateTime_t *self, uint32_t value) {
uint32_t *ptr = &self[0];
*((uint32_t *)ptr) = value;
}
void ChangeId(TDateTime_t *self, uint8_t value) {
uint8_t *ptr = &self[0] + 4;
*((uint8_t *)ptr) = value;
}
int main() {
TDateTime_t DateTime = { 0 };
ChangeData(&DateTime, 0xFFFFFFFF);
ChangeId(&DateTime, 0xFF);
return 0;
я знаю что для таких вещей void* тоже подходит? тыкните пальцем что не так
Решение задачи: «Прямой доступ к памяти»
textual
Листинг программы
*(uint8_t *)ptr