c - 赋值与初始化:在 C 中初始化另一个结构内的结构
问题描述
我有一个结构,其中有两个字段本身就是结构。我想使用初始化列表来分配内部结构的字段,而不必手动分配每个字段。
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};
但是,此代码不会编译:
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};
^
为什么这不起作用?是什么原因?
解决方案
你可以在定义时这样做r2
,比如
struct rectangle r2 = {
{5, 6},
{7, 20}
};
或使用复合文字,如
r2.p1 = (struct point){5, 6};
r2.p2 = (struct point){7, 20};
推荐阅读
- java - Jackson Json将日期字符串反序列化为java日期
- excel - 文件已存在时如何保存 Excel 工作簿?
- vim - Vim 没有在侧面显示编号
- java - Java - TreeMap 不检索密钥
- typescript - Chutzpah 无法识别任何用 mocha 和 typescript 编写的测试 - 模块系统是 UMD
- reactjs - react-router-v4 NavLink 不重新渲染组件
- c# - 将 Excel 单元格值传递给 C# Winforms 应用程序
- hadoop - Hive 仅获取值的最大出现次数
- reactjs - Google Cloud:react-i18next 未在 React 应用程序中加载 json 翻译文件
- django - Django 2 网址模式