gpt4 book ai didi

c++ - 这个 icmphdr *pkt = (icmphdr *)packet; 是什么意思?意思是?

转载 作者:行者123 更新时间:2023-11-28 06:47:51 25 4
gpt4 key购买 nike

所以我正在阅读帖子 here我遇到了这段代码

char packet[sizeof(icmphdr)];
memset(packet, 0, sizeof(packet));

icmphdr *pkt = (icmphdr *)packet;

据我所知,它们声明了一个大小为 icmphdr 的 char 数组,然后它对我来说变得模糊了。这之后的一行我什至不知道从哪里开始解释。

最佳答案

查看 icmphdr 的类型定义。实际上,您是在说服编译器您的 char(字节)数组实际上是一个 icmphdr(我猜)结构。这意味着您可以将原始字节读入数组,然后像访问结构一样访问该数组的不同部分。

所以假设 icmphdr 定义为:

typedef struct
{
int sequence_number;
int data_size;
bool fragment;
} icmphdr;

这意味着您接下来要做:

read(socket_fd, packet, sizeof(icmphdr));

然后您可以执行以下操作:

int sequence= packet->sequence_number;

当然,如果你这样做,你必须非常小心结构包装。

关于c++ - 这个 icmphdr *pkt = (icmphdr *)packet; 是什么意思?意思是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com