==== 一个很奇怪的问题====
// unsigned char 占 1 个字节
// unsigned short 占 2 个字节
// unsigned long 占 4 个字节
// 结构 arpPacket 应该是 42 个字节
// 而运行的结果却是给 arpPacket 分配了 44 个字节的内存
// 是成员 arp_tha[6] 这个数组分配了 8 个字节的内存
// 为什么 ???
#include <stdio.h>
typedef struct arpPacket
{
unsigned char eh_dst[6];
unsigned char eh_src[6];
unsigned short eh_type;
unsigned short arp_hrd;
unsigned short arp_pro;
unsigned char arp_hln;
unsigned char arp_pln;
unsigned short arp_op;
unsigned char arp_sha[6];
unsigned long arp_spa;
unsigned char arp_tha[6];
unsigned long arp_tpa;
} ARPPACKET, *PARPPACKET;
void main()
{
ARPPACKET ARPPacket;
printf("%d \n", sizeof(ARPPacket));
printf("PA:%p\n\n", &ARPPacket);
printf("P1:%p\n", &ARPPacket.eh_dst);
printf("P2:%p\n", &ARPPacket.eh_src);
printf("P3:%p\n\n", &ARPPacket.eh_type);
printf("P4:%p\n", &ARPPacket.arp_hrd);
printf("P5:%p\n", &ARPPacket.arp_pro);
printf("P6:%p\n", &ARPPacket.arp_hln);
printf("P7:%p\n", &ARPPacket.arp_pln);
printf("P8:%p\n\n", &ARPPacket.arp_op);
printf("P9:%p\n", &ARPPacket.arp_sha);
printf("Pa:%p\n", &ARPPacket.arp_spa);
printf("Pb:%p\n", &ARPPacket.arp_tha);
printf("Pc:%p\n", &ARPPacket.arp_tpa);
getchar();
}