I was asked to encode this memory diagram:

I was also provided with this structure:
struct product {
char *name;
double price;
int stock_count;
};
typedef struct product PRODUCT;
I do not need to write the full function only the required instructions and write an array from the heap that can store two products, with the first product being initialized as shown; that is, with information about the ends.
this is what i tried to do: for the element
PRODUCT item;
item->name = "bread"; //not sure if it "bread" or &"bread"
item->price = 2.25;
item->stock_count = 45;
for a heap array that can store two products:
PRODUCT *inventory, *p;
p = malloc(sizeof(PRODUCT)*2);
assert(p!=NULL);
inventory = p;
but I'm not sure how to change the reading [0] on the memory chart, where the name is “pie”, the price is 9.50, and share_count is 7.
and, if possible, someone can write from the memory diagram what happens to it if
PRODUCT *p;
p = &inventory[1];
*p = item;
It was performed?