Структуры это просто особый тип указателей. Наверное можно позволить себе сказать даже , что это указатель на указатель.
typedef struct
{
size_t size;
uint16_t addr;
}STRUCT_NAME;
навигация по указателям
Точно также как и навигация по простым типам данных. Это реально очень удобно.
STRUCT_NAME arr[10];
for(uint32_t ii=0; ii < sizeof(arr); ii++
{
*(STRUCT_NAME *)(arr+ii).size =123;
*(STRUCT_NAME *)(arr+ii).addr =ii+4;
}
Можете передавать указатели на структуры в функции и там работать с ними.