返回信息流int main()
{
unsigned short host_s = 0x1234, net_s;
unsigned long host_l = 0x12345678, net_l;
char *addr_dec = "192.168.10.26", *p;
struct in_addr addr;
net_s=htons(host_s);
net_l=htonl(host_l);
unsigned char *p1=(unsigned char *)&host_s;
printf("host_s: p1[0]=0x%x, p1[1]=0x%x, &p1[0]=0x%x, &p1[1]=0x%x\n",p1[0],p1[1],&p1[0],&p1[1]);
unsigned char *p2=(unsigned char *)&net_s;
printf(" net_s: p2[0]=0x%x, p2[1]=0x%x, &p2[0]=0x%x, &p2[1]=0x%x\n",p2[0],p2[1],&p2[0],&p2[1]);
unsigned char *p3=(unsigned char *)&host_l;
printf("host_l: p3[0]=0x%x, p3[1]=0x%x, p3[2]=0x%x, p3[3]=0x%x, \n \
&p3[0]=0x%x, &p3[1]=0x%x, &p3[2]=0x%x, &p3[3]=0x%x\n",p3[0],p3[1],p3[2],p3[3],&p3[0],&p3[1],&p3[2],&p3[3]);
unsigned char *p4=(unsigned char *)&net_l;
printf(" net_l: p4[0]=0x%x, p4[1]=0x%x, p4[2]=0x%x, p4[3]=0x%x, \n \
&p4[0]=0x%x, &p4[1]=0x%x, &p4[2]=0x%x, &p4[3]=0x%x\n",p4[0],p4[1],p4[2],p4[3],&p4[0],&p4[1],&p4[2],&p4[3]);
addr.s_addr = net_addr(addr_dec);
p = net_ntoa(addr);
printf("net addr is 0x%x, string addr is %s\n", addr.s_addr, p);
return 0;
}
这段主函数中在最开始声明了一个in_addr类型的变量addr 然后再函数net_addr()中虽然没有作为传入参数 但是却在此函数中被改变 这是不是就是说in_addr类型的默认就是全局变量??
这是一条镜像帖。来源:北邮人论坛 / cpp / #73251同步于 2013/8/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
struct in_addr 算不算得上是默认的全局变量?
RPGViewer
2013/8/15镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
addr.s_addr = net_addr(addr_dec);
LZ看仔细,net_addr()的传入参数不是addr,是addr_dec。addr_dec是一个字符数组,net_addr的功能是将其转化为一个unsigned long类型的变量并返回,返回值被赋给了addr。
in_addr结构的说明看这里:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738571(v=vs.85).aspx
【 在 RPGViewer 的大作中提到: 】
: int main()
: {
: unsigned short host_s = 0x1234, net_s;
: ...................
额 这里确实是我理解疏漏了
【 在 erabbit 的大作中提到: 】
: addr.s_addr = net_addr(addr_dec);
: LZ看仔细,net_addr()的传入参数不是addr,是addr_dec。addr_dec是一个字符数组,net_addr的功能是将其转化为一个unsigned long类型的变量并返回,返回值被赋给了addr。
: in_addr结构的说明看这里:
: ...................