关于指针的菜鸟问题
有以下几个问题,
register struct hostent *hostptr = NULL;
struct in_addr *spIPAddr = NULL;
以上这两个个结构体在哪定义的?
char *spHostStart = NULL;
spIPAddr = (struct in_addr *) hostptr->h_addr_list[0];
这句话是什么意思?
spHostStart = inet_ntoa(*spIPAddr);
这一句呢?
问题点数:60、回复次数:8Top
1 楼socol(这个问题很难)回复于 2006-03-20 11:13:56 得分 5
我以为, *hostptr 这个是指向结构体的指针
(struct in_addr *) hostptr->h_addr_list[0]是指
指针hostptr指向struct in_addr这个结构体中的成员h_addr_list数组
Top
2 楼goodluckyxl(被人遗忘的狗)回复于 2006-03-20 11:25:57 得分 20
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
};
//是socket使用当中的地址ip联合结构
struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};
Top
3 楼sparkiss()回复于 2006-03-20 12:00:43 得分 10
hostent结构体是用于储存给定服务器信息的。此结构体在Winsock2.h中声明.
in_addr结构体是通过INTERNET地址来描述主机信息。Winsock2.h
spHostStart = inet_ntoa(*spIPAddr);这句是将INTERNET地址转成用.表示的地址,也就是IP地址。
Top
4 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2006-03-20 12:12:53 得分 5
楼上怎么就知道一定是winsock呢?Top
5 楼fenglhua(总也飞不高)回复于 2006-03-20 12:39:05 得分 0
谢谢楼上的各位兄弟,能不能再给解释一下
spIPAddr = (struct in_addr *) hostptr->h_addr_list[0];
这句呢,特别是(struct in_addr *)这个我不太理解Top
6 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-20 12:42:13 得分 5
c语言的基础: 强制类型转换
(struct in_addr *) 也只是一种数据类型而已
Top
7 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-20 12:50:18 得分 15
spIPAddr = (struct in_addr *) hostptr->h_addr_list[0];
这句呢,特别是(struct in_addr *)这个我不太理解
----------------------
(struct in_addr *)强制类型转换 ...
把 hostptr->h_addr_list[0] 的类型解释为(struct in_addr *)类型,
然后赋值给 spIPAddr ...Top
8 楼shaobolovelinglijun(邵波一生一世爱凌丽君)回复于 2006-03-20 13:12:43 得分 0
顶贴。不需要理由。Top




