((struct ip *)0)是啥意思???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了((struct ip *)0)是啥意思???相关的知识,希望对你有一定的参考价值。

参考技术A 这个一般是用来求 struct ip 结构体成员的偏移量的追问

确实是这样的,我们一般都这样用,就是不明白其中是怎么转换的。0做为空指针转换成(struct ip*),求详解,谢谢。

追答

就是强制类型转换啊, 把 数 0 强制转换为 指向 struct ip * 结构的地址, 而且这个地址在
内存位置的 0 处, 所以在这种情况下, 得出结构体成员的 偏移量就会很容易了。

这样做, 就是在 内存 0 地址处,到 sizeof(struct ip)这段内空存间内,
保存的是这个结构体 的内容。

这只是个人看法, 仅供参考!

就是强制类型转换啊, 把 数 0 强制转换为 指向 struct ip * 结构的地址, 而且这个地址在
内存位置的 0 处, 所以在这种情况下, 得出结构体成员的 偏移量就会很容易了。

这样做, 就是在 内存 0 地址处,到 sizeof(struct ip)这段内空存间内,
保存的是这个结构体 的内容。

这只是个人看法, 仅供参考!

本回答被提问者采纳
参考技术B 将0转换为结构体 ip 类型的指针。追问

我就搞不懂0为什么可以转换成指针类型(struct ip *)。把0昨晚空指针。

追答

0作为空指针无需转换,但你也可以转换。

struct中变量名前的点是啥意思?

【中文标题】struct中变量名前的点是啥意思?【英文标题】:What does a dot before the variable name in struct mean?struct中变量名前的点是什么意思? 【发布时间】:2011-11-21 05:19:50 【问题描述】:

查看linux内核源码,发现如下:

static struct tty_operations serial_ops = 
  .open = tiny_open,
  .close = tiny_close,
  .write = tiny_write,
  .write_room = tiny_write_room,
  .set_termios = tiny_set_termios,
;

我从未在 C 中见过这样的符号。 为什么变量名前有一个点?

【问题讨论】:

这用于以“新”C99 风格初始化结构成员(它们不是变量)(一些编译器甚至在 C99 发布之前就可能使用相同的格式)。 【参考方案1】:

这是一个Designated Initializer,它是为 C99 添加的语法。 相关摘录:

在结构初始化器中,指定要初始化的字段的名称 在元素值之前带有'.fieldname ='。例如,给定 如下结构,

struct point  int x, y; ; 

下面的初始化

struct point p =  .y = yvalue, .x = xvalue ; 

等价于

struct point p =  xvalue, yvalue ;

【讨论】:

【参考方案2】:

有时称为“指定初始化”。这是 C99 的新增功能,虽然它是 GNU 扩展已有一段时间了。

在列表中,每个. 命名要初始化的结构的一个成员,即所谓的指示符。

【讨论】:

以上是关于((struct ip *)0)是啥意思???的主要内容,如果未能解决你的问题,请参考以下文章

ip地址0段是啥意思啊

struct中变量名前的点是啥意思?

struct rebind::other 是啥意思?

#define LEN sizeof(struct shu) 是啥意思

typedef enum与typedef struct分别是啥意思

ip route 0.0.0.0.0.0.0.0 是啥意思