我记得在我的期末考试中看到了这行代码,直到今天我仍然无法理解它或它的用途。我厌倦了谷歌搜索“双指针”和“指向类数组的指针”,但仍然找不到答案。
我想知道您为什么要使用这样的东西(实际使用)或将我带到一个为我解释这个的网站。谢谢你。
vendingMachine **va = new vendingMachine*[numMachines];
最佳答案
所涉及的类型是一个类并不重要。它也可以是基本类型:
int **va = new int*[numInts];
语义相同。您有一个指向指针的指针。由于动态分配的数组是用指针实现的,所以它变成了一个指针数组。这是一个用例:
int a, b;
va[0] = &a;
va[1] = &b;
但由于如前所述,您可以使用指针实现数组,因此您也可以将其视为数组的数组。所以你有另一个用例:
va[0] = new int[10];
va[1] = new int[10];
// ...
va[numInts - 1] = new int[10];
va[0][0] = 2;
va[0][1] = 8;
// ...
va[numInts - 1][9] = 3;
所以你有一个数组数组。或者换句话说,int
的二维数组。如果您现在从 int
改回 vendingMachine
,您将拥有 vendingMachine
对象的二维数组。
关于c++ - 指向类的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13208276/