语法问题求解答

2019-07-21 04:54发布

S是一个结构体 有一个 uint8 index 和16个bool变量,(uint16 *)&S[1] = *data; *data是个16位的指针这是直接把data的值赋予了后面的16个bool变量吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 06:11
测试下
edmund1234
2楼-- · 2019-07-21 10:42
(uint16 *)&S[1] = *data;
这样写, 是指你有多过1个结构体, 是在拿S[1]的地址, 而不是拿S的第二个bool变量的地址。


ZDawn
3楼-- · 2019-07-21 10:46
意思应该是 S[1]元素的地址改为 *data,但是由于数组的地址不可更改,所以运行结果应该有问题
misl1994
4楼-- · 2019-07-21 16:28
((uint16 *)&S)[1] = *data,少打个括号,就是一个结构体,就是赋值给后16个
jxcrgt35
5楼-- · 2019-07-21 17:14
 精彩回答 2  元偷偷看……
holy404290384
6楼-- · 2019-07-21 21:52
本帖最后由 holy404290384 于 2019-2-28 17:11 编辑

((uint16 *)&S)[1] ,取S的地址,让后强制转换成U16的指针,此操作下,如果S不是16位对齐,运行时会出错,假设是16为对齐的,
那么这个((uint16 *)&S)就相当于是个数组名,[1]就是数组的第二个元素,相对于&S的地址偏移是2(U16);
S中的bool是占的宽度要根据你的实际情况,所以是不是赋值给后16个,不好确定

一周热门 更多>