我记得在我的期末考试中看到了这行代码,直到今天我仍然无法弄清楚它或它的用途。我厌倦了谷歌搜索“双指针”和“指向类数组的指针”,但仍然找不到答案。
我想知道你为什么会使用这样的东西(实际使用)或引导我到一个为我解释这个的网站。谢谢你。
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;
所以你有一个数组数组。或者换句话说,s 的二维数组int
。如果您现在从 更改回int
,vendingMachine
您将拥有一个二维vendingMachine
对象数组。