如何创建指向结构的指针数组?

时间:2018-03-17 02:51:12

标签: c++ arrays pointers struct

我有

struct Item {int id; string name; float sellprice; int qstock;};
struct Sale {int id; int quantity; double tcost;};

我想创建一个包含100个索引的数组,这样当我取消引用数组位置时, 我将处于结构位置。还必须使用malloc为结构分配内存。

e.g。

*(items[0]).id=10; //will store id=10 in first index struct.

但是我不确定如何声明指针数组。 我需要指向结构,然后是指针的数组吗?

itemsPtr *Item;
itemsPtr items[100];
items[0]->id=10; 

或者它会是什么样的。

Item *items[100];

我尝试了其中一些变种并遇到了问题。此外,当我必须将这个指针数组传递给函数时,我只是传递数组名称,因为它是指针或什么?

1 个答案:

答案 0 :(得分:1)

如果您使用的是C,则可能会执行以下操作:

Item* items[100]; //an array of Item*

要分配新的Item,并在数组中存储指向此Item的指针,您可能会执行以下操作:

items[i] = malloc(sizeof(Item));

要访问元素,您可以使用取消引用(*)或箭头(->)运算符。如果你只是想访问结构的一个成员,那么后者可能是首选:

items[i]->id
*(items[i]).id

要将数组传递给函数,您可以像传统数组一样传递数组items

在数组超出范围之前,请务必清理已分配的Item。因此,对于在数组中初始化的每个值:

free(items[i])

当然,如果您使用的是C ++,您可能希望避免使用malloc / free,而是使用newdelete运算符,这是标准的(你不能混它们。)