为什么这个结构赋值在C中不起作用?

#include <stdio.h>
#include <stdlib.h>


int main()
{
    struct point
    {
        int x, y;
    };

    struct rectangle
    {
           struct point upper_left, lower_right;
    };

    struct rectangle *p = malloc(sizeof(struct rectangle));

    p->upper_left = {10,25};

    return 0;
}
#include <stdio.h>
#include <stdlib.h>


int main()
{
    struct point
    {
        int x, y;
    };

    struct rectangle
    {
           struct point upper_left, lower_right;
    };

    struct rectangle *p = malloc(sizeof(struct rectangle));

    p->upper_left = {10,25};

    return 0;
}

这给出:

回答

语法{ ... }是一个初始化列表,只能作为初始化的一部分出现,而不是赋值。

但是,您可以做的是使用复合文字(包括初始值设定项)来动态创建结构对象并将其用于赋值。

 p->upper_left = (struct point){10,25};


以上是为什么这个结构赋值在C中不起作用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>