结构体sockaddr_in初始化该如何写?

BAO BAO 2018-02-07 06:09:17
sockaddr_in原型:

struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};


in_addr原型:
typedef struct in_addr
{
union{
struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { unsigned short s_w1,s_w2; } S_un_w;
unsigned long S_addr;
}S_un;
}in_addr;


我想初始化的代码:第三个成员该怎么写?
sockaddr_in servAddr = {AF_INET, htons(9092), {inet_addr("118.85.207.85")}};  //初始化,第三个成员该怎么写?
//servAddr.sin_family = AF_INET;
//servAddr.sin_port = htons(9092);
//servAddr.sin_addr.s_addr =inet_addr("118.85.207.85");
...全文
1228 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-08
  • 打赏
  • 举报
回复
sockaddr_in servAddr = {
    /* servAddr.sin_family      = */ AF_INET,
    /* servAddr.sin_port        = */ htons(9092),
    {
    /* servAddr.sin_addr.s_addr = */ inet_addr("118.85.207.85")
    }
};
http://bbs.csdn.net/topics/380157851 http://bbs.csdn.net/topics/390150105
赵4老师 2018-02-08
  • 打赏
  • 举报
回复
赵4老师 2018-02-08
  • 打赏
  • 举报
回复
“变量赋值”和“变量初始化”不是一回事! “变量赋值”发生在运行期,其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
BAO BAO 2018-02-08
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
union只能对第一个元素进行初始化,共享部分内存的值以此初始化值共享,建议像你注释那样写,毕竟程序是给人读的
感谢版主的回答,我刚想到办法 union是可以 指定对象初始化的
BAO BAO 2018-02-08
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
sockaddr_in servAddr = {
    /* servAddr.sin_family      = */ AF_INET,
    /* servAddr.sin_port        = */ htons(9092),
    {
    /* servAddr.sin_addr.s_addr = */ inet_addr("118.85.207.85")
    }
};
http://bbs.csdn.net/topics/380157851 http://bbs.csdn.net/topics/390150105
这么写 不行呢,我是在Windows下编译 in_addr里不是一个成员 windows下头文件里的是个共用体 里面有三个成员
faihung 2018-02-08
  • 打赏
  • 举报
回复
结构体初始化,一般就是直接赋值。内存拷贝memcpy、字符串拷贝strcpy等。
paschen 2018-02-07
  • 打赏
  • 举报
回复
union只能对第一个元素进行初始化,共享部分内存的值以此初始化值共享,建议像你注释那样写,毕竟程序是给人读的
linyanxin2007 2018-02-07
  • 打赏
  • 举报
回复
sockaddr_in addr = {0} 不就这样么

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧