#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 *这种类型的指针
最后一个*是取出强制转化后的指针所指向地址的内容
------解决方案--------------------
从右到左,按*的作用,以及类型强制转换,来解释。