将char数组转换为uint8类型指针

时间:2014-03-23 05:48:04

标签: c pointers char uint8t pointer-conversion

我想将uchar数组转换为uint8指针。因为它们都是8位,值范围从0到255所以我认为它不应该导致和发布。

uchar list[100];

我必须将上面的列表传递给一个接受指向uint8t的指针的函数。 我可以这样通过:

(uint8t *)list

这样当我将其作为uint8读取时它不会影响该值。

1 个答案:

答案 0 :(得分:0)

嗯,ucharuint8_t的宽度不一定相同!从技术上讲,角色可以是16位宽。这是罕见的,但它发生了,特别是在嵌入式世界。所以uchar 可能不是8位类型,但是uint8 总是是8位类型。

如果uchar确实不是字节,则从uchar []转换为uint8_t *会消除对齐限制。对于那些不支持错失对齐访问的平台(闻起来像再次嵌入!)试图像这样投射将是一个错误。如果使用GCC进行编译,请添加-Wcast-align标志以捕获此类问题。