您的位置:首页 > 其它

数组强制转换成结构体指针

2017-09-20 21:35 387 查看
今天看公司代码,遇到一个数组指针强制转换成结构体指针的地方,就在想这样做的结果会是什么,和别人讨论了一下。得到结果是,这样做是让结构体按照自己的属性重新读取数组中的数据,

字节对齐

如果结构体中所有属性所占字节和数组的类型所占字节一样(如果数组类型是16位的,属性也是16位的),那就直接按照属性的顺序,将数组中的数据依次读取出来(是读取,不是复制,因为是指针强制转换)

字节不对齐

如果结构体属性所占字节数和数组的类型不一样,那样数据就会乱,结构体会按照属性的类型依次读取类型长度的数据,然后数据就会乱了

大小端

这个自然也是很有影响的,如果写的时候默认小端模式,而芯片中确实大端模式,那样数据就会直接读成倒的了,如数组 { 0x1234,0x5678 } ,强制转换成结构体指针后,假设默认是小端模式,作者认为结构体中两个数据应该为{  data1= 0x1234 , data2=0x5678 },而芯片实际是大端模式,那CPU读取的数据就是{  data1=0x7856, data2=0x3412 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: