【问题标题】:Initializing an array of pointers in C++在 C++ 中初始化一个指针数组
【发布时间】:2013-04-26 04:57:43
【问题描述】:

我有一个非常具体的数据结构问题,我无法弄清楚。对于我的任务,我必须在我的标题的私有部分中有一个动态分配的结构数组。所以,到目前为止,在我的头文件中,我有

struct node{
  int name;
  node *next;};  

私下里,我有

node *adj;

至少据我所知,您将如何设置阵列。
然后,在我的 .cpp 文件中,我有

adj = new node*[];

这会引发一堆错误。但是,当我有

node *adj[n];

在我的 cpp 中,我的标题中没有任何内容,它可以工作。我的问题是如何在我的标题的私有部分中有一个数组,但在我的 .cpp 中动态分配空间?

【问题讨论】:

  • node *adj; 不是指针数组,它是指向node 的指针。 node **adg 将是一个指针数组。
  • @EdS。标题表示指针数组,文本表示结构数组。考虑到这一点,我猜真正需要的是指针数组。
  • @john: 是的,我本来打算这么做的:adj = new node*[];

标签: c++ arrays struct dynamic-memory-allocation


【解决方案1】:

你已经定义了

node *adj;

它是一个指向节点的指针,或者一个节点数组。如果你想要一个指向节点的指针数组,你应该声明

node **adj;

它是一个指向节点的指针,或指向节点的指针数组。在第一种情况下,您使用

分配数组
adj = new node[n];

它定义了一个节点数组。在你使用的那一秒

adj = new node*[n];

它定义了一个节点指针数组。

adj = new node*[];

应该没有意义,因为它没有告诉编译器生成数组有多大。

【讨论】:

  • 这正是我所需要的。第二个版本完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多