C语言item-type仅用单个字段表示货架隔间信息含义及实现方法
问题结论
你当前的实现方案不符合需求,核心问题是自定义存放位置类型的字段归属错误,你定义的struct ExtraInfo本身是符合「封装两个整数为单个自定义类型」要求的,只需调整它的挂载位置即可。
需求含义解释
item-type仅由单个字段/成员呈现的含义是:将原本独立的两个整数字段(货架号、隔间号)封装为一个自定义的聚合类型后,只需要在商品条目类型中声明1个该自定义类型的成员,即可同时存储两个值,不需要在商品结构体中分别写两个int类型的字段,对外表现为仅单个成员。
现有代码问题分析
你当前将struct ExtraInfo *ShelfCompartment放在了ShoppingList结构体中,这意味着整个购物列表共用同一个存放位置,而非每个商品条目对应自己的货架+隔间信息,和业务逻辑不符。
正确实现参考
将自定义的存放位置类型成员放到GrocaryItem结构体中即可,示例代码如下:
// 自定义存放位置类型,封装两个整数值 struct ExtraInfo { int shelf; // 货架号 int compartment;// 隔间号 }; struct GrocaryItem{ char productName[20]; float amount; char unit[10]; char FileName[30]; struct ExtraInfo position; // 单个成员即可存储两组整数,符合需求 }; struct ShoppingList{ int length; struct GrocaryItem *itemList; };
如果需要支持存放位置为空的场景,也可以将成员声明为struct ExtraInfo *position;,注意使用时需要手动申请、释放对应内存。
内容的提问来源于stack exchange,提问作者LeoParden
相关产品推荐
相关产品推荐

