((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)这段内空存间内,
保存的是这个结构体 的内容。
这只是个人看法, 仅供参考!
我就搞不懂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)是啥意思???的主要内容,如果未能解决你的问题,请参考以下文章
#define LEN sizeof(struct shu) 是啥意思