谁能给我解释一下这个说法!
pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
最佳答案
获取hp->h_addr
,并将其转换为struct in_addr*
。 Actor 可能有不同的原因。也许 hp->h_addr
是 void*
并且需要强制转换来告诉编译器应该使用什么类型来查找 s_addr
。它也可能是另一个以 in_addr
作为其第一个成员的结构
struct in_addr {
struct saddr_t s_addr;
};
struct socket {
struct in_addr addr;
};
struct server {
struct socket *h_addr;
};
server *hp;
然后,将 socket*
转换为 in_addr*
将是有效的,因为在其地址的开头有一个 in_addr
。转换后,访问成员 s_addr
。这些类型在 POSIX 下的网络编程中很常见,看起来不像我上面的例子,但上面可能是手头的情况。
关于c++ - C 关于选角的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607524/