我有一个包含两个字段的结构,它们本身就是结构。我想使用初始化列表来分配内部结构的字段,而不必手动分配每个字段。
struct point
{
int x;
int y;
};
struct rectangle
{
struct point p1;
struct point p2;
};
struct rectangle r2;
r2.p1 = {5, 6};
r2.p2 = {7, 20};
但是这段代码无法编译:
structs3.c:105:11: error: expected expression before ‘{’ token
r2.p1 = {5, 6};
^
structs3.c:106:11: error: expected expression before ‘{’ token
r2.p2 = {7, 20};
^
为什么这行不通?这是什么原因?
最佳答案
你可以在定义 r2
时这样做,比如
struct rectangle r2 = {
{5, 6},
{7, 20}
};
或使用 compound literals如
r2.p1 = (struct point){5, 6};
r2.p2 = (struct point){7, 20};
关于c - 分配与初始化 : Initializing structs inside another struct in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50848253/