【发布时间】:2019-02-11 20:58:58
【问题描述】:
如何使用mxt_config *cfg 指针来分配存储在数组中的值?主要思想是分配一个数组值,以便将指针移动到结构的下一个元素。
typedef struct
{
unsigned char F_Id;
unsigned char V_Id;
unsigned char Ve;
unsigned char Bu;
unsigned char Mat;
}InfoId_t;
struct mxt_config
{
InfoId_t id;
unsigned char info_crc;
unsigned char config_crc;
};
int main()
{
unsigned char line1[7] = {0x1,0x2,0x3, 0x4, 0x5,0x6, 0x7};
mxt_config *cfg = NULL;
mxt_config objcfg;
cfg = &objcfg;
for (int i = 0; i < 7; i++)
{
(unsigned char*)&cfg->id + i = line1[i];
}
}
任何帮助都会很好,因为肯定有问题,但我看不出是什么。
提前致谢
【问题讨论】:
-
执行您所要求的“正确”方法是:
std::memcpy(cfg, line_1, sizeof(line_1)),但如果我正在对此进行代码审查,我会先问很多问题,然后再让这个想法飞起来地点。 -
@Frank 即使这样也可能不正确。他们需要资产
sizeof(mxt_config) == sizeof(line1) -
简短的回答是:不要这样做。假设结构的内存布局是什么是不安全的。相反,编写一个例程,从 unsigned-char 数组中的相应字节按名称显式设置结构的每个成员,以便编译器知道做正确的事情。