#include "winsock2.h"#pragma comment(lib,"ws2_32.lib")int main( int argc, char * argv[]){ WSADATA wsaData; char name[155]; char *ip; PHOSTENT hostinfo; if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) { if ( gethostname ( name, sizeof (name)) == 0) { printf ( "hostname=%s\n" , name ); if ((hostinfo = gethostbyname(name)) != NULL) { ip = inet_ntoa (*( struct in_addr *)*hostinfo->h_addr_list); //得到地址字符串 printf ( "local host ip: %s\n" ,ip); } } WSACleanup( ); } return 0;}
inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list)
谁能帮我说明一下这句是怎么完成转换的,三个*都是什么意思啊.谢谢
------解决方案--------------------
*hostinfo-> h_addr_list 是指向hostinfo-> h_addr_list地址的内容
(struct in_addr *)是将上面的内容强制转化为struct in_addr *这种类型的指针
最后一个*是取出强制转化后的指针所指向地址的内容
------解决方案--------------------
从右到左,按*的作用,以及类型强制转换,来解释。