關於鑄造的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. 關於鑄造的問題
- 2. 鑄造C++問題
- 3. C#鑄造問題
- 4. Swift問題:關於AnyObject類型鑄造
- 5. 關於在java中鑄造問題
- 6. 關於鑄造
- 7. 問題與C++鑄造
- 8. C#.net鑄造問題
- 9. C#向下鑄造問題
- 10. 關於在C++中的類鑄造
- 11. 有關鑄造的Java編譯問題
- 12. 有關鑄造問題的幫助
- 13. 鑄造問題(或者不是鑄造)
- 14. JBoss鑄造問題
- 15. 型鑄造問題
- 16. C++鑄造的問題(結構)
- 17. 基本鑄造的問題(C#)
- 18. 關於結果的鑄造
- 19. 關於C++構造函數的問題
- 20. JAVA SE7關於顯式鑄造的問題
- 21. 關於對象超類和鑄造的問題
- 22. 關於繼承/鑄造的一些最終問題
- 23. 初學者關於類型鑄造的問題
- 24. 有關繼承和鑄造的C++問題
- 25. 鑄造問題的ArrayList
- 26. Django的ifequal鑄造問題
- 27. C++工廠和鑄造問題
- 28. 在MATLAB中鑄造問題C/MEX
- 29. C#通用接口鑄造問題
- 30. 其關於型鑄造>