указатель на массив struct{unsigned char a;} можно через memcpy сделать указателем на unsigned char, и передать в функцию (sizeof структуры и unsigned char одинаков), вопрос в том - достаточно ли этого для strict aliasing rule как здесь описано
https://habr.com/ru/company/otus/blog/443602/или нужно делать отдельную копию массива уже сразу unsigned char, делать memcpy из массива структур, и тогда передавать указатель на первый элемент нового массива