Побайтное чтение памяти: «знаковый символ *» против «беззнаковый символ *»
Часто нужно читать из памяти по одному байту за раз, как в этом наивном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]
.