Прямой доступ к памяти - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы