铸造结构如何工作?

时间:2012-11-24 04:26:19

标签: c casting struct

我现在了解套接字,我看到有两个结构 Sockaddr和sockaddrin。

指南说要在结构中包含带有8个字符的char来比较一个结构与另一个结构我不明白它的工作如何解释我?

它喜欢把int转换为char [2]?

它如何使用结构?

谢谢。

1 个答案:

答案 0 :(得分:2)

SOCKADDR是一个通用结构,包含一个ADDRESS_FAMILY字段,然后在该字段后面包含14个字节(char类型)。根据sin_family字段(ADDRESS_FAMILY)的值,后面的14个字节将被不同地解释。

当sin_family值等于AF_INET时,SOCKADDR结构实际上是一个SOCKADDR_IN结构,这意味着14个字节确实应该被解释为:

sin_port的2个字节 sin_addr为4个字节 8个字节的填充,未使用但必须在那里使其与SOCKADDR结构的大小相同。

因此,如果你有一个指向SOCKADDR的指针,并且你检查了sin_family字段并且它等于AF_INET,那么你可以将指针转换为指向SOCKADDR_IN的指针并以这种方式访问​​字段。