gpt4 book ai didi

c++ - 内存: "signed char *" vs "unsigned char *"的字节读取

转载 作者:IT老高 更新时间:2023-10-28 22:17:19 31 4
gpt4 key购买 nike

人们经常需要一次从内存中读取一个字节,就像在这个幼稚的 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 * .

当然,charunsigned char可能不相等。但是我是否使用 char * 有区别吗? , signed char * , 或 unsigned char *什么时候按字节读/写内存?

更新:实际上,我完全知道 c=200根据 c 的类型,可能有不同的值.我在这里要问的是为什么人们有时会使用 unsigned char *而不仅仅是char *读取内存时,例如为了存储 uint32_tchar[4] .

最佳答案

你应该使用 unsigned char。 C99 标准说 unsigned char 是唯一保证密集(无填充位)的类型,并且还定义您可以通过将任何对象(位域除外)复制到 unsigned char 数组,即对象表示,以字节为单位。

对我来说,明智的解释是,如果您使用指针以字节形式访问对象,则应该使用 unsigned char

引用:http://blackshell.com/~msmud/cstd.html#6.2.6.1 (来自 C1x 草案 C99)

关于c++ - 内存: "signed char *" vs "unsigned char *"的字节读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8385824/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com