我被要求编码这个记忆图:
我也得到了这个结构:
struct product {
char *name;
double price;
int stock_count;
};
typedef struct product PRODUCT;
我不必编写完整的函数只需要编写所需的语句,并从堆中编写一个可存储两个产品的数组,第一个产品初始化如图所示;即有关馅饼的信息。
这是我试图做的: 对于项目
PRODUCT item;
item->name = "bread"; //not sure if it's "bread" or &"bread"
item->price = 2.25;
item->stock_count = 45;
表示可以存储的堆中的数组 两个产品:
PRODUCT *inventory, *p;
p = malloc(sizeof(PRODUCT)*2);
assert(p!=NULL);
inventory = p; //I've also read that the answer might be p = inventory not sure why though
但我不确定如何更改内存图中的[0]节目,其名称为" pie",价格为9.50,stock_count为7。
如果可能的话,有人可以在内存图中写下如果
会发生什么PRODUCT *p;
p = &inventory[1];
*p = item;
被执行了?
答案 0 :(得分:3)
如果我正确理解了您的要求,那么您就是正确的,并且根据我的理解,如果您只需要1 inventory
,则无论如何都不需要p
。您可以更改代码,如
PRODUCT *inventory = NULL;
inventory = malloc(sizeof(PRODUCT)*2);
assert(inventory !=NULL);
然后,您可以使用inventory
访问成员,例如
inventory[0].name = "pie";
inventory[0].price = 9.50;
inventory[0].stock_count = 7;
. . . .
inventory[1].name
inventory[1].price
等
答案 1 :(得分:0)
您可以参考产品/库存中的字段:
inventory[0].name = "pie";
...
或者您可以临时参考该部分:
PRODUCT *p = &inventory[0];
p->name = "pie";
...
如果使用最近的编译器,你也可以在初始化时声明它全部:(你不能再调整它的大小了)
PRODUCT inventory[2] = {
{ name: "pie", price: ..., stock_count: ... },
};