创建节点数组

时间:2014-10-21 08:03:57

标签: c++ arrays pointers nodes

当我们创建一个整数数组时,我们这样做:

int main() {
int x;
cout << "Enter size of array"
cin >> x;
int* myArray;
myArray = new int[x]
}

我们在数组旁边分配星号,我们将它指定为指针数组吗?

如果我创建一个节点数组:

struct Node {
string Name;
int Age;
}

我运行了一些代码来试验它并更多地理解它,我尝试像数组样本那样创建一个带有节点的数组。

int main() {
Node* sumShit[5];
    Node* America = new Node();
    America->age = 16;
    America->Name = "America";
    sumShit[0] = America;
    Node* Japan = new Node();
    Japan->age = 15;
    Japan->Name = "Japan";
    sumShit[1] = Japan;

    cout << "[" << sumShit[1]->Name << ", " << sumShit[1]->age << "]";

}

所有内容都用指针打印出来然后我也没有指针,我只是在节点中存储了节点属性:

Node myNodeShit[5];
    Node Poop;
    Poop.age = 16;
    Poop.Name = "Poop";
    myNodeShit[0] = Poop;
    sortArrayName(myNodeShit, 5);
    printArray(myNodeShit, 5);

这也有效,但是使用指针并将其存储在节点中的优势是什么。当谈到算法,排序和使用内存时,是否有一种首选方式。我试图弄清楚为什么将它作为节点与节点数组的指针数组更好。

1 个答案:

答案 0 :(得分:1)

使用指针可以更灵活地更新/修改现有数据,因为数据只在内存中声明一次。从这里,您可以使用指针从代码中的任何位置进行更改。

此外,使用指针可节省内存,而创建实际节点将创建所述节点的副本。当您将数组传递给函数时,这一点就变得很明显了。在这种情况下,节点数组(没有指针)成为推送到调用堆栈的本地副本。当函数返回时,您将丢失对节点所做的任何修改。相反,使用指针将保存节点的状态。

如有疑问,请尝试尽可能使用指针。