Цитата(Метценгерштейн @ Sep 24 2018, 15:39)

А как адрес передать этой p.data?
Вот так:
Код
&(p_req->write.p_data)
Цитата
А если еще и смещение надо передать +16, например??
Адрес привести к нужному типу данных и обратиться к этому адресу через новый указатель (uint16_t - тут для примера):
Код
*(((uint16_t*)&(p_req->write.p_data)) + 16) = ...
или так (если работаете на C++ и ваш компилятор это поддерживает):
Код
*(reinterpret_cast<uint16_t*>(&(p_req->write.p_data)) + 16) = ...
Понимаю, это - редкостная дичь :D
Как избежать? Да, сразу правильно строить нужные структуры данных (в т.ч. вложенные), пользуясь struct и union, минимально используя указатели.