令其为以下结构:
typedef struct {
int x;
int y;
} st;
我可以将 int 数组“转换”为 struct st:
st z;
int t[2];
t[0] = 0;
t[1] = 1;
z = *(st*)(t);
printf("%d,%d\n", z.x, z.y);
那么输出是,除了例外:
0,1
但我无法将 struct st 转换为 int 数组:
st z = {0, 1};
int t[2];
t = *(int*)(&z);
因为数组在初始化后无法分配。
那么,我怎样才能实现这一目标呢?
谢谢你帮助我。
z = *(st*)(t);
从语法上讲,这段代码将编译(分配给struct
)并且可能会给出预期或意外的结果,因为它违反了严格的别名要求。
t = *(int*)(&z);
由于多种原因,这段代码在语法上不正确,因此编译本身会失败。首先,你不能分配给数组,其次,你分配一个指针int
to an int
大批。更好的选择是使用memcpy
or union
反而。不过我会推荐会员副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)