赋值与初始化:在C中的另一个结构内初始化结构

Gal*_*axy 2 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};
Run Code Online (Sandbox Code Playgroud)

但是这段代码不会编译:

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};
           ^
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?是什么原因?

Som*_*ude 6

你可以在定义r2时这样做

struct rectangle r2 = {
    {5, 6},
    {7, 20}
};
Run Code Online (Sandbox Code Playgroud)

或使用复合文字作为

r2.p1 = (struct point){5, 6};
r2.p2 = (struct point){7, 20};
Run Code Online (Sandbox Code Playgroud)