c - 分配与初始化 : Initializing structs inside another struct in C

标签 c struct

我有一个包含两个字段的结构,它们本身就是结构。我想使用初始化列表来分配内部结构的字段,而不必手动分配每个字段。

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/

相关文章:

c - 访问结构数组会出现段错误

将 ASCII 数字转换为其 ASCII 字符代码 - C(不打印!)

c - 两段看似相同的代码却有不同的结果(将指针传递给结构)

C简单文件整数计数程序实现问题

c - 在C中使用线程实现管道

json - 解码没有键的嵌套 json

c - 将递归 C 结构移植到 Fortran

go - 如果 struct golang 中的值为 nil、0、false,则更新字段?

c - GCC 的 itoa 函数

C 编程 %d { printf ("%d"); }