为什么这个结构赋值在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};