使用动态数组和结构C ++的函数中的引用

时间:2018-05-19 12:38:46

标签: c++ pointers structure

我无法理解C ++中我的两个函数发生的事情之间的理论。不幸的是,我无法复制整个代码,因为我必须将所有代码从我的母语翻译成英语。我在这里面临的困境如下: - allStudents和oldAnswers都是动态数组 - 函数dataEntry的工作方式非常好,它会更改allStudents,并且更改在main函数中有效,尽管参数是dataEntry(Student * allStudents ...)而不是dataEntry(Student *& allStudents。 ..) - 为了使函数addNewAnswer在main函数中有效地改变指针oldAnswers,我必须用&来定义参数,所以addNewAnswer(AllAnswers *& oldAnswers ...)

为什么没有&而另一个没有,虽然两者都有效地改变了指针?是因为addNewAnswer函数还对数组大小(内存分配)进行了更改吗?

MediaStore.Audio.Albums

1 个答案:

答案 0 :(得分:0)

oldAnswers =编辑指针本身,就像你说的那样。

operator[]实际上是一个接受指针并返回引用的函数。当你有allStudents[i] =时,你实际上并没有编辑指针本身。相反,您正在i Students旅行超过allStudents指针并编辑其中的任何内容。

因此allStudents是另一个指针的副本(通过引用传递)或别名(按值传递)并不重要,因为在任何一种情况下,所有students[i]都返回相同的内容引用相同的Student

如果不做课程,请使用std::vector代替new[]。对于值/引用语义而言,它比指向堆的指针更直观,这非常方便。