Как понять конструкцию (*(Type*)a=b) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем! Ищу ошибку в чужой программе на C, натолкнулся на макрорасширение, после которого получается выражение: (*(volatile uint32_t *)&pdev->regs.GREGS->GCCFG = gccfg.d32); Это же просто оператор присваивания, но что означают звездочки со скобками и причём здесь тип? Компилятор не ругается, а я нигде не могу найти описания такой конструкции, и понять её результат. Помогите, если нетрудно!

Решение задачи: «Как понять конструкцию (*(Type*)a=b)»

textual
Листинг программы
    int x = 1;
    *(int *) &x = 2;

Объяснение кода листинга программы

  1. Объявляется переменная типа int с именем x и инициализируется значением 1.
  2. Получается адрес памяти, где хранится значение переменной x, при помощи оператора &.
  3. Приводится тип указателя к типу int, при помощи оператора * и приведения типа.
  4. Значение переменной x меняется на 2 при помощи оператора =.

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


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

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

9   голосов , оценка 3 из 5