关于这个问题
Convert from uint8_t * to char * in C
这个建议只是简单地用(char*)进行强制转换。为什么在这种情况下可以接受?或者回答者只是按字面意思理解问题?
将unsigned(取决于实现)转换为signed感觉很可疑。
关于这个问题
Convert from uint8_t * to char * in C
这个建议只是简单地用(char*)进行强制转换。为什么在这种情况下可以接受?或者回答者只是按字面意思理解问题?
将unsigned(取决于实现)转换为signed感觉很可疑。
1条答案
按热度按时间eni9jsuy1#
在C中,允许通过指向该类型的有符号或无符号版本的指针访问给定类型的变量。
这在C standard的第6.5p7节中规定:
对象的存储值只能由具有以下类型之一的左值表达式访问:
*对象有效类型对应的有符号或无符号类型的类型,
uint8_t
是unsigned char
的别名(至少在CHAR_BIT
为8的系统上是这样),因此允许将uint8_t *
转换为char *
,然后解引用结果指针。还要注意的是,根据上面的最后一个要点,使用指针 * 任何 * 字符类型可以访问任何类型的对象。