c - 为什么这个结构赋值在 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;
}
这给出了:
error: expected expression before ‘{’ token
19 | p->upper_left = {10,25};
解决方案
语法{ ... }
是一个初始化列表,并且可能只作为初始化的一部分出现,而不是赋值。
但是,您可以做的是使用复合文字(包括初始化程序)动态创建结构对象并将其用于分配。
p->upper_left = (struct point){10,25};
推荐阅读
- r - 摘要函数返回 Null 而不是 Max、Min 等
- html - 使画布伸展以填满窗口
- html - HTML 元素在 WordPress 中是不可见的
- java - 在 FlinkRunner 上使用 Beam 的 KafkaIO 时如何修复 NotSeraliazableException
- python - keras v1.2.2 与 keras v2+ 的奇怪行为(准确性差异巨大)
- python - 无法在 Windows 上使用 pip 安装 pytorch
- ember.js - 如何从测试组件触发 Ember 组件中的函数?
- c# - 如何在 Func 委托列表上使用 LINQ where 子句
- android - 如何测试需要授权的屏幕?Espresso + MockWebServer
- c# - 使用空响应执行 PostAsync