当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 我想知道这句话是什么意思
帖子发表于 : 2011-06-03 9:36 

注册: 2011-04-06 12:16
帖子: 23
送出感谢: 0 次
接收感谢: 0 次
struct hostent *h;
h=gethostbyname(argv[1]);
printf("IP Address : %s\n",inet_ntoa(*((struct in_addr *)h->h_addr)))


char * inet_ntoa(struct in_addr in)
inet_ntoa的参数是一个in_addr的结构体 怎么语句里成了指针?
*((struct in_addr *)h->h_addr)最终表示的是什么意思 能否给详细解释一下


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 我想知道这句话是什么意思
帖子发表于 : 2011-06-03 10:39 

注册: 2011-04-06 12:16
帖子: 23
送出感谢: 0 次
接收感谢: 0 次
额 没人知道吗 自己顶 :em06


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 我想知道这句话是什么意思
帖子发表于 : 2011-06-03 12:08 
头像

注册: 2010-04-02 16:44
帖子: 530
系统: openSUSE 13.2 x64
送出感谢: 2
接收感谢: 11
引用:
inet_ntoa(*((struct in_addr *)h->h_addr))


拆分一下
(struct in_addr *)h : 将指针h强制转换为in_addr类型
(struct in_addr *)h->h_addr : 指针h所指向的结构体中的内容,此处为h_addr,这个h_addr应该是一个指针
*((struct in_addr *)h->h_addr) : 取出h_addr指向的内容,按照你的说法应该就是一个in_addr类型的结构体

C++ N多时间没用了,可能有不正确的地方,多多包涵~ :em04


_________________
正在建设中的个人博客


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 我想知道这句话是什么意思
帖子发表于 : 2011-06-03 14:22 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
ls的搞错了
代码:
*((struct in_addr *)h->h_addr)

1. h->h_addr: 也就是 h 的结构体的 h_addr 成员, 应该是一个指针
2. ((struct in_addr *)h->h_addr): 即把 h->h_addr 这个指针强制转为 struct in_addr 类型的指针
3.*((struct in_addr *)h->h_addr): 取 2 转换后的指针所指的值


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 我想知道这句话是什么意思
帖子发表于 : 2011-06-03 16:41 
头像

注册: 2010-04-02 16:44
帖子: 530
系统: openSUSE 13.2 x64
送出感谢: 2
接收感谢: 11
看来我又在优先级上犯了错了 :em21
建议lz以后和我一样在凡是可能出现歧义的地方都加上括弧吧 :em11


_________________
正在建设中的个人博客


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 我想知道这句话是什么意思
帖子发表于 : 2011-06-08 16:31 

注册: 2011-04-06 12:16
帖子: 23
送出感谢: 0 次
接收感谢: 0 次
fanhe 写道:
ls的搞错了
代码:
*((struct in_addr *)h->h_addr)

1. h->h_addr: 也就是 h 的结构体的 h_addr 成员, 应该是一个指针
2. ((struct in_addr *)h->h_addr): 即把 h->h_addr 这个指针强制转为 struct in_addr 类型的指针
3.*((struct in_addr *)h->h_addr): 取 2 转换后的指针所指的值
给力 经你们这么一分析 貌似很明朗了 一步步的做 总会出结果的 :em09


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译