关于unsigned char型数组的起始地址

2019-03-24 15:56发布

由于M3的内核是32位的,如果用unsigned char定义一个数组,数组的起始地址一定是32位字的地址啊?   比如:        unsigned char data[N];        unsigned long *usdata;          usdata = (unsigned long *) data;   有没有可能,数组data[N]的起始地址的末两位不是00,执行强制转换的时候丢失前面的部分数据啊? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
heycare
1楼-- · 2019-03-24 20:52
< 类型强转。 例如
u32_t data;
u8_t string[20];
data = (u32_t)string;
data只是把string前4个字节拿过来~~ 不会丢失吧~~
brucege888
2楼-- · 2019-03-24 23:47
< :TI_MSP430_内容页_SA7 --> 目前没发现数据丢失的情况,只是不确定任意一个数组的起始地址的最后两个bit位都是00。。
heycare
3楼-- · 2019-03-25 00:33
 精彩回答 2  元偷偷看……
ddllxxrr
4楼-- · 2019-03-25 04:33
强制类型转换是前面动作,不可能后边动作地
brucege888
5楼-- · 2019-03-25 08:11

如果单独定义一个数组,似乎都是4字节对齐,但是在一个结构体内部定义数组的时候,就需要特别注意了,并不一定是4字节对齐的。。

heycare
6楼-- · 2019-03-25 09:19
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章