如何将指向数组的指针存储在数组中? [关闭]

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::arraystd::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。在这样的类中拥有裸露的指针是一个糟糕的设计。为避免内存泄漏和未定义行为,建议改用容器。

【讨论】:

以上是关于如何将指向数组的指针存储在数组中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何制作具有动态大小的数组?动态数组的一般用法(也可能是指针)? [关闭]

运行后删除指向已排序字符串数组的指针会给我一个错误[关闭]

有没有办法访问/取消引用并查找存储在双指针向量中的元素的值? [关闭]

如何在数组中保存指针对象? [关闭]

告诉任何 UITextField 关闭

C ++回调数组[关闭]