【发布时间】:2012-01-13 05:21:50
【问题描述】:
通常需要一次从内存中读取一个字节,就像在这个幼稚的 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] 中。
【问题讨论】:
-
“但它有什么不同吗?” - 有什么区别?
-
米奇:好点子,现在已经修好了。
-
unsigned char 更清楚地表示处理的是原始字节,而不是字符,即使二进制值相同并不重要。
标签: c++ c coding-style char unsigned-char