如何将指向数组的指针存储在数组中? [关闭]
Posted
技术标签:
【中文标题】如何将指向数组的指针存储在数组中? [关闭]【英文标题】:How to store a pointer to an array in an array? [closed] 【发布时间】:2018-11-19 18:05:57 【问题描述】:在我的程序中,我有一个具有以下构造函数的类:
pp = new Particle*[maxN]
在一个函数中我有:
// create the new particle and fill with data
pp[n] = new Particle;
pp[n]->charge = charge;
pp[n]->px = px;
pp[n]->py = py;
pp[n]->pz = pz;
// store the new particle pointer in the array
//...
问题是最后一条指令的代码我不知道怎么写,即
// store the new particle pointer in the array
你能帮帮我吗?
【问题讨论】:
您的代码已经创建了新的粒子并将指向它的指针保存在数组中(pp[n] = new Particle;
),之后询问如何将它存储在那里没有意义。此外,您不应为此使用指针、数组和动态内存分配 (new
)。如果没有特别的理由不这样做,请使用std::vector
,尤其是作为初学者。
pp[n] = new Particle;
1) 停止使用手动内存管理。 2) 使用std::array
或std::vector
。 3) 请发帖minimal reproducible example。此外,智能指针是一个(非常有用/好)的东西。 2018年请不要写C++98代码。
编写 cmets 的人希望您首先创建对象 Particle* p = new Particle; p->charge = ...
,然后存储该指针 pp[n] = p;
。由于您偏离了预期,因此您陷入了困境。
真核生物,Jesper Juhl 这段代码是要求使用这些特定事物的练习的一部分。无论如何感谢您的建议:) @molbdnilo 谢谢,这就是我正在寻找的答案
【参考方案1】:
问题是我不知道如何写最后一条指令的代码,即
// store the new particle pointer in the array
你已经在第一行完成了:
pp[n] = new Particle;
new Particle
创建一个动态存储的Particle
对象,表达式的结果是指向该对象的指针。 pp[n] = ...
在pp
指向的数组的索引n
处分配指针。
PS。在这样的类中拥有裸露的指针是一个糟糕的设计。为避免内存泄漏和未定义行为,建议改用容器。
【讨论】:
以上是关于如何将指向数组的指针存储在数组中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何制作具有动态大小的数组?动态数组的一般用法(也可能是指针)? [关闭]