((struct name*)0) - > member)在C中做什么?
我遇到的实际C语句是这样的:
(char *) &((struct name *)0)->member)
Run Code Online (Sandbox Code Playgroud) GNU C中允许零长度数组,因此可以进行初始化
struct line {
int length;
char contents[0];
};
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
Run Code Online (Sandbox Code Playgroud)
注意:我在这里指的是这个页面:http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html (提供C中可变长度结构的基本介绍)
它继续说:"在ISO C90中,你必须给内容一个长度为1,这意味着你要浪费空间或使参数复杂化为malloc."
那是什么意思?有人可以举例说明如何在C90中初始化变长结构以帮助理解吗?
我知道如何实现它.但是,我想了解rand在内部是如何表现的,为什么有必要初始化rand函数的'seed'值.
换句话说 - rand函数如何使用种子值生成随机数?