【发布时间】:2021-06-21 21:59:17
【问题描述】:
C++
理论上,如果我有一个类,称为Box。我已经完成了所有变量和服务等。如果我被要求创建一个程序,我需要在其中创建一个指针类变量,它是一个动态数组。
为什么我需要使用 ex:Box **boxes= nullptr; ?
另外,如果有人问我,除了声明 Box 名称之外,我还需要声明一个整数变量大小等于 0:
int size = 0;
如何完成一个名为void addBox(Box** box, int &size) 的函数,以便每次调用它时我都会为 box 添加参数,并将另一个 box 添加到动态数组中?
仅供参考,我是编码新手,我需要将此概念应用到课堂上的项目中。
【问题讨论】:
-
Why do I need to use ex: Box **boxes= nullptr;你没有。 -
type**是指向另一个type类型指针的单个指针。 (比如Box **boxes;)如果您为多个指针分配存储空间并将起始地址分配给您的指针,您可以将分配块中的每个指针索引为boxes[0], boxes[1], ...。如果然后将地址分配给class Box的实例,依次分配给每个指针,则可以将每个实例用作boxes[i]->member,等等。 -
此外,
void addBox(Box** box, int &size)看起来像一个函数,用于将Box类型的实例添加到链表(或堆栈或队列...)。在这种情况下,您可能会传递 address_of 类Box的单个实例(通常是列表中的head节点或具有链接节点的堆栈顶部)。您正在传递指针的地址,因此您可以更新函数中原始指针的地址,以便更改将在返回后继续存在(在 C++ 中,您还可以传递对指针的引用)。如果您只是传递一个指针,该函数会收到一个“副本”,并且更改会在返回时丢失.. -
听起来您的讲师不知道如何教授 C++。确实应该是
void addBox(std::vector<Box> & boxes),或者namespace learning { class box_vector { ... } }的成员函数
标签: c++ class pointers dynamic-memory-allocation dynamic-arrays