c - 使用 -> 运算符初始化结构指针
问题描述
我必须使用一个指向它的点来初始化一个结构,其中 upper_left 是点 (10,25) 和 lower_right(20,15)
struct point {int x, y;};
struct rectangle {struct point upper_left, lower_right;};
struct rectangle *p;
p = malloc(sizeof(*p));
p->upper_left.x = 10;
p->upper_left.y = 25;
p->lower_right.x = 20;
p->lower_right.y = 15;
有没有办法让它更“紧凑”而不是一个一个?我已经尝试过了,但是来自编译器的错误是相同的“'{'令牌之前的预期表达式”
p->upper_left = {10, 25};
p->lower_right = {20,15};
/////////////
p->upper_left = {.x = 10, .y = 25};
p->lower_right = {.x = 20, .y = 15};
//////////////////////////////
*p = {.upper_left = {10, 25}, .lower_right = {20, 15}};
解决方案
是复合字面量
p->upper_left = (struct point){10, 25};
*p = (struct rectangle){.upper_left = {10, 25}, .lower_right = {20, 15}};
你可以在这里自己试验:https ://godbolt.org/z/yw_JC0
推荐阅读
- javascript - D3使用点和线绘制具有范围(最小值,最大值)值的分类数据
- c# - 当其中一种实现需要更多数据时该怎么办
- xcode - 如何将图像从集合视图传递到集合视图
- solr - 可以在 solr usinf tlog 文件中恢复文档
- python - 马拉松。如何创建公共/私人频道?
- ios - UITableView 底部的奇怪空白空间
- perl - 我可以将混合类型的可选参数传递给子例程吗?
- javascript - 如何将数组拆分为奇数数组和偶数数组
- sql - 在运行平均值中添加额外的分组依据
- android - Android Studio原生调试不起作用,总是显示“此文件不是项目的一部分”