两个C片段之间的差异

时间:2012-10-28 01:17:12

标签: c

我无法解释为什么这两个C片段的行为方式不同。我试图序列化两个结构,嗯和啊,作为单个字节缓冲区(uint8_t)。第一个代码块工作,第二个代码块不工作。我无法弄清楚差异。如果有人能向我解释,我将不胜感激。

第1区:

uint8_t arp_reply_buf[sizeof(eh) + sizeof(ah)];
uint8_t *eh_ptr = (uint8_t*)&eh;
for (int i = 0; i < sizeof(eh); i++)
{
    arp_reply_buf[i] = eh_ptr[i];
}
uint8_t *ah_ptr = (uint8_t*)&ah;
int index = 0;
for (int i = sizeof(eh); i < (sizeof(eh) + sizeof(ah)); i++)
{
    arp_reply_buf[i] = ah_ptr[index++];
}

第2栏:

uint8_t arp_reply_buf[sizeof(eh) + sizeof(ah)];
arp_reply_buf[0] = *(uint8_t *)&eh;
arp_reply_buf[sizeof(eh)] = *(uint8_t *)&ah;

1 个答案:

答案 0 :(得分:3)

在第二个示例中,您只在两个索引中设置值:

  1. arp_reply_buf[0]

    arp_reply_buf[0] = *(uint8_t *)&eh;
    
  2. arp_reply_buf[sizeof(eh)]

    arp_reply_buf[sizeof(eh)] = *(uint8_t *)&ah;
    
相关问题