如何编码内存图?
How to code memory diagram?
我被要求编写这个内存图:
我也得到了这个结构:
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
但我不确定如何更改名称为 "pie",价格为 9.50,stock_count 为 7.
的内存图中显示的 [0]
如果可能的话,有人可以写下内存图,了解如果
会发生什么
PRODUCT *p;
p = &inventory[1];
*p = item;
被执行了?
可以直接参考product/inventory里面的字段:
inventory[0].name = "pie";
...
或者你可以暂时参考那部分:
PRODUCT *p = &inventory[0];
p->name = "pie";
...
如果使用最近的编译器,你还可以做的是在初始化时声明它:(你不能再调整它的大小了)
PRODUCT inventory[2] = {
{ name: "pie", price: ..., stock_count: ... },
};
如果我正确理解了您的要求,那么看来,您的方法是正确的,而且根据我的理解,如果您只需要 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
等等
我被要求编写这个内存图:
我也得到了这个结构:
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
但我不确定如何更改名称为 "pie",价格为 9.50,stock_count 为 7.
的内存图中显示的 [0]如果可能的话,有人可以写下内存图,了解如果
会发生什么PRODUCT *p;
p = &inventory[1];
*p = item;
被执行了?
可以直接参考product/inventory里面的字段:
inventory[0].name = "pie";
...
或者你可以暂时参考那部分:
PRODUCT *p = &inventory[0];
p->name = "pie";
...
如果使用最近的编译器,你还可以做的是在初始化时声明它:(你不能再调整它的大小了)
PRODUCT inventory[2] = {
{ name: "pie", price: ..., stock_count: ... },
};
如果我正确理解了您的要求,那么看来,您的方法是正确的,而且根据我的理解,如果您只需要 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
等等