Часто нужно читать из памяти по одному байту за раз, как в этой наивной реализации memcpy():
void *memcpy(void *dest, const void *src, size_t n)
{
char *from = (char *)src;
char *to = (char *)dest;
while(n--) *to++ = *from++;
return dest;
}
Однако иногда я вижу, что люди явно используют unsigned char * вместо просто char *.
Конечно, char и unsigned char могут быть не равны. Но имеет ли значение, использую ли я char *, signed char * или unsigned char *, когда вы часто читаете/записываете память?
ОБНОВЛЕНИЕ: Собственно, я полностью понимаю, что c=200 может иметь разные значения в зависимости от типа c. Я спрашиваю здесь, почему люди иногда используют unsigned char * вместо просто char * при чтении памяти, например. чтобы сохранить uint32_t в char[4].