关于铸造的C问题
回答
需要hp->h_addr
,并将其转换为struct in_addr*
。演员阵容可能有不同的原因。也许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;
然后,铸造因为其地址有在开始时in_addr
socket*
到in_addr*
将是有效的另一个结构。演员投入后,会员s_addr
被访问。这些类型在POSIX下的网络编程中很常见,而且看起来不像我上面的例子,但上面的情况可能就在眼前。
它的铸造结构体成员H_ADDR为结构组in_addr *,然后引用的新铸造的s_addr成员组in_addr
这把hp->h_addr
,就像它指向struct in_addr
,然后尝试访问s_addr
的那struct in_addr
构件设置含有可变销 与放置在字段s_addr值结构的一下,域sin_addr其位于该地址指向由包含在VA结构的H_ADDR场的场s_addr马力可变结构
换句话说采取ADDRES从马力H_ADDR的值,并假设其指向(一个in_addr)和场s_addr复制到pin.sin_addr
的approriate字段从内OT:
hp->h_haddr
获得由hp
指向的结构的h_addr
成员。(struct in_addr *)
将此h_addr
值转换为指向in_addr
结构的指针。->s_addr
获取它指向的in_addr
结构的s_addr
成员。
因此,它得到该结构的s_addr
构件指向该结构的h_addr
构件通过hp
指向。 (hp
和h_addr
都是指针)
然后它将此值分配给pin.sin_addr.s_addr
。
(HP-> H_ADDR):从指针马力得到H_ADDR场
((结构组in_addr *)(HP-> H_ADDR)):把结果从上面的语句的指针in_addr结构
- > s_addr:从上述语句的结果指针中获取s_addr字段
=:赋值。
HP-> a_addr浇铸的指针结构类型一个in_addr的,一个in_addr已字段中指定诸如s_addr等
Unix套接字可以处理不同类型的网络寻址,网络寻址是只是其中之一,因此在访问各个字段时必须将套接字地址描述符转换为正确的地址描述符。
例如,sockaddr_in6处理与sockaddr_in不同的IPv6地址。
马力为结构hostent型指针,它是最有可能由一个“的gethostbyname()”呼叫返回。它有一个名为h_addr的成员,它实际上是h_addr_list [0]的一个别名(它包含为您的名称查询检索到的第一个IP地址)。在这种情况下;您将此IP地址传递给您的结构sockaddr_in类型变量“pin”。它有一个名为sin_addr的成员,其类型为struct in_addr。
struct in_addr {unsigned long int s_addr; }
要完成赋值,应该对h_addr进行类型转换以构造in_addr ptr(通常是char *),然后访问其s_addr成员。
我希望这可以解释你的生产线正在发生什么。
- 1. Swift问题:关于AnyObject类型铸造
- 2. 问题与C++铸造
- 3. C#.net铸造问题
- 4. C#向下铸造问题
- 5. 有关铸造的Java编译问题
- 6. 铸造问题(或者不是铸造)
- 7. JBoss铸造问题
- 8. 型铸造问题
- 9. C++铸造的问题(结构)
- 10. 关于继承/铸造的一些最终问题
- 11. 初学者关于类型铸造的问题
- 12. 关于C++构造函数的问题
- 13. 有关继承和铸造的C++问题
- 14. Django的ifequal铸造问题
- 15. 其关于型铸造>
- 16. 关于铸造对象
- 17. 在MATLAB中铸造问题C/MEX
- 18. C++工厂和铸造问题
- 19. objective c 2.0 - 关键字铸造与非关键字铸造
- 20. 用于检查C#中潜在铸造问题的工具
- 21. 理解铸造问题的问题
- 22. 动态铸造问题
- 23. 类型铸造问题
- 24. 在JAVA中铸造问题
- 25. 铸造和类型问题
- 26. 问题类型铸造
- 27. ProtoBuf类型铸造问题
- 28. Flex 3.2铸造问题
- 29. 模板铸造问题
- 30. 再次铸造问题