Часто требуется читать из памяти по одному байту за раз, как в этой наивной реализации 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 *
при байтовом чтении/записи памяти?
UPDATE: На самом деле, я прекрасно понимаю, что c=200
может иметь разные значения в зависимости от типа c
. Меня интересует, почему люди иногда используют unsigned char *
вместо char *
при чтении памяти, например, чтобы сохранить uint32_t
в char[4]
.