如何创建指向结构的指针数组
How to Create an array of pointers to structs?
我有
struct Item {int id; string name; float sellprice; int qstock;};
struct Sale {int id; int quantity; double tcost;};
我想创建一个包含 100 个索引的数组,这样当我取消引用数组位置时,我将处于结构位置。此外,必须使用 malloc 为结构分配内存。
例如
*(items[0]).id=10; //will store id=10 in first index struct.
但是我不确定如何声明指针数组。我是否需要创建一个指向结构的指针,然后创建一个指向该指针的数组?
itemsPtr *Item;
itemsPtr items[100];
items[0]->id=10;
还是会像这样。
Item *items[100];
我尝试了其中一些变体并遇到了问题。另外,当我必须将此指针数组传递给函数时,我是否只传递数组名称,因为它是指针还是什么?
如果你使用的是 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
,而是按照标准使用new
和delete
运算符(不能混合使用它们(。
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- C++:映射结构中的结构指针
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 类的静态结构指针声明在C++
- 在两个.cpp文件之间定义全局类/结构指针
- 返回对常量结构(指针类型)成员的引用:明显的左值到右值转换
- 是否可以将无符号字符数组reinterpret_cast到仅包含C++中无符号字符成员的结构指针
- 如何在地图中使用结构指针
- 结构指针在"新"调用上给出已分配的地址?
- 铸造结构指针指向C 的工会指针
- c++ 结构指针在初始化为 NULL 时无法读取内存
- 函数中的结构指针的地址为0x1
- C 用结构指针初始化结构
- C 结构指针铸成数组Interop C#
- 方法中不允许访问结构指针
- 如何打印出结构指针
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 尝试将结构指针传递给类时出错
- 初始化结构指针的值
- 使用 pybind11 将自定义结构(指针向量)从 C++ 传递到 python 的方法是什么?