Естественно char. Строка состоит из символов, char хранит символ. И это единственное, для чего использую char - именно когда надо хранить
символ (строку символов). Когда нужен байт - использую (u)int(_fast)8_t, а когда нужен указатель на область памяти, в которой может быть что угодно (для передачи, приема, побайтовой отладочной распечатки) - void (const) *, использую неявное приведение любого указателя к void (const) * и уже внутри соотвествующей функции привожу к указателю на байт:
Код
template <typename T>
void dump(T const & data)
{
dump(&data, sizeof(T));
}
void dump(void const * from, size_t size)
{
auto pSrc = (uint8_t const * )from;
.....
}
void test()
{
struct t1
{
......
} Data;
dump(Data);
}
Предупреждений нет.