Проблема:
В отличие от C ++, увеличение / уменьшение указателя не возвращает lvalue в C.
Оператор addressof должен иметь lvalue в качестве операнда.
Решение:
Поскольку вы хотите выполнить свою задачу в одном выражении, здесь хитрый способ сделать это:
uint8_t **dptr = ++ptr ? &ptr : &ptr;
Некоторые другие решения из раздела комментариев: -
Lundin : uint8_t **dptr = (++ptr, &ptr);