C的高级用法
fendouxiaoxiaoniao
这个作者很懒,什么都没留下…
展开
-
(size_t)&(((s *)0)->m)的理解 .
#define offsetof(s,m) (size_t)&(((s *)0)->m) 看了半天没弄懂,空指针怎么会不出错的,他们说没有写入操作,即没有 mov x, dword ptr []。找了下别人的理解,最详细的如下: ((s *)0):强制转化成数据结构指针,并使其指向地址0; ((s *)0)->m:使该指针指向成员m &(((s *)0)->m):获取该成员m的地转载 2015-04-30 16:03:06 · 566 阅读 · 0 评论 -
C语言变长数组 struct中char data[0]的用法
今天在看一段代码时出现了用结构体实现变长数组的写法,一开始因为忘记了这种技术,所以老觉得作者的源码有误,最后经过我深思之后,终于想起以前看过的用struct实现变长数组的技术。下面是我在网上找到的一篇讲解很清楚的文章。 在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组。此时,我们可以使用结构体的方法实现C语言变长数组。 struct MyData转载 2015-02-02 09:30:23 · 450 阅读 · 0 评论