【发布时间】:2019-05-03 00:03:53
【问题描述】:
对于你们中的一些人来说,这个问题可能有点不言自明,但我真的想了解:List myList = new ArrayList<Vertex>(); { In JAVA } 和 Vertex* myList = new Vertex[size] {In C++} 之间的相似之处。 Java 中不存在的 C++ 中的 * 有什么意义。我知道它指向列表的第一个元素..我们什么时候应该使用*?它只是用于向量还是?
【问题讨论】:
-
Vertex* myList = new Vertex[size]已替换为std::vector<Vertex> myList(size)。听起来你可以使用good C++ book -
Vertex* myList 表示 myList 是指向 Vertex 的指针(因为标准 C 数组存储为指向第一个元素的指针)。 tutorialspoint.com/cplusplus/cpp_pointers.htm
-
认为Java
ArrayList就像一个数组是错误的。它们是两种截然不同的东西。 -
@AndyTurner 我不会说它们如此不同以至于无法进行比较,但这绝对是一个不好的例子。不过,我认为这个问题更像是“什么是指针?”而不是关于数组的问题。
-
在 go 的类型语法的描述中有一个有趣的东西解释了
*:虽然我们倾向于写Vertex* myList,但最初的意图是写Vertex *myList,意思是“*myList的类型是Vertex"。由于*取消引用指向其类型的指针类型,这意味着myList是指向Vertex的指针。这有点迂回,但显然,这是符号出现的地方。