【发布时间】:2012-08-24 17:52:36
【问题描述】:
假设我有一个带有标签MyStruct 的完全定义的结构,并假设x, y, ..., z 是其字段的允许值。为什么是
struct MyStruct q = {x,y,..,z};
允许,但是
struct MyStruct q;
q = {x,y,...,z};
不允许?我觉得这很烦人。在第二种情况下,我之前声明了q,我需要为每个字段一个一个地赋值:
q.X = x; q.Y = y; ... q.Z = z;
其中X, Y, ..., Z 是MyStruct 的字段。这背后有什么原因吗?
【问题讨论】:
-
赋值的右值不是具体的,它在运行时。然而,初始分配是具体的,并且可以在二进制文件中使用(如果这是一个 elf 文件,最有可能在 .BSS 部分中)。如果要相互分配结构,可以将 q 分配给初始化的东西。喜欢;结构 MyStruct w = {x,y,..,z}; q = w