C++ 如何创建指向结构的指针数组?C++;
我写了这段代码,我不确定它到底是如何工作的,但它是如何工作的。代码如下:C++ 如何创建指向结构的指针数组?C++;,c++,arrays,pointers,struct,C++,Arrays,Pointers,Struct,我写了这段代码,我不确定它到底是如何工作的,但它是如何工作的。代码如下: struct node { string data; node *chain; }; int tablesize=10; node *ptr [tablesize]; for (i=0; i<tablesize; i++) { ptr[i]=new node; ptr[i]->data="Empty"; ptr[i]->chain=NULL;
struct node
{
string data;
node *chain;
};
int tablesize=10;
node *ptr [tablesize];
for (i=0; i<tablesize; i++)
{
ptr[i]=new node;
ptr[i]->data="Empty";
ptr[i]->chain=NULL;
}
struct节点
{
字符串数据;
节点*链;
};
int tablesize=10;
节点*ptr[表大小];
对于(i=0;idata=“空”;
ptr[i]->chain=NULL;
}
如果我理解正确,首先我创建一个由10个指针组成的数组,然后给每个指针分配一个新节点?为什么只有在我两次取消引用它时它才起作用?
(ptr[i]->data=“Empty”;
ptr[i]
是一个节点*
,因此您必须使用->
(您没有取消引用)因为
ptr
被声明为指针数组。因此ptr[i]
是指向节点的指针。因此您需要取消引用它才能访问指向的实体。因为ptr[i]
是指针。您没有取消引用两次。顺便说一句,您使用的是可变长度数组(VLA)那不是标准的C++。不要忘记清理你的混乱……不,你会怎么称呼它?那么,说节点*PTR [表]是正确的,实际上是指针数组的指针?@ ReBooTo.88-不,它是指向“代码>节点< /COD>的指针数组。就像<代码> int [10 ] < /Cord>是一个INTS数组。我认为这是因为:节点*PTR [表];与写入相同:节点**ptr=new节点*[tablesize];