我对指针和数组有一点误解。当我想创建一个节点数组时,我需要一个指针吗?
是吗
Node* array;
array = new Node[size];
当然问题是当我想将节点分配到数组中时
void Class::enqueue(int newNum)
{
Node* newNode = new Node();
newNode->value = newNum;
newNode->age = 0;
if (isFull())
resize();
top++;
array[top] = newNode; // ERROR. does this have to be a pointer?
}
newNode 是一个指针,我理解。但是如果我想动态分配一个节点,那么我将不得不使用一个指针。如果是这种情况,那么我将如何将节点分配到数组中?谢谢。
原文由 Jack Smother 发布,翻译遵循 CC BY-SA 4.0 许可协议
你说你想要一个节点数组,但似乎你真正想要的是一个指向节点的 指针 数组。您的代码中的 newNode 是一个指针,因此该数组应该能够保存
Node
的指针。将您的数组定义为:记住在不再需要时释放内存:
您还可以使用
Node
的数组:但是您应该小心,因为这样节点的内容将被 复制 到数组单元格中。然后会有两个独立的对象,持有相同的数据。您不能使用数组的内容来操作原始节点。
我猜你真的需要一个指向节点的 指针 数组:)(或者正如比尔所说,一个指针向量:
vector<Node*> v;
)