结构体指针移动后指针位置重叠求助
别人写的代码有一行没看懂,大体如下:struct myhdr
{
uint32_t src_ip;
uint32_t dst_ip;
uint8_t zero;
uint8_t protocol;
uint16_t udp_len;
};
static char buffer[2049];
struct iphdr *ip_header;
struct udphdr *udp_header;
struct myhdr *my_header;
ip_header = (struct iphdr *)buffer;
udp_header = (struct udphdr *)(ip_header + 1);
my_header = (struct myhdr *)((char *)udp_header - sizeof(struct myhdr));
这里my_header不是指向了ip_header的内存了么,之后分别给my_header、ip_header赋值内存是怎么分配的?udp_header的指针自动向右移动嘛?