4

我记得在我的期末考试中看到了这行代码,直到今天我仍然无法弄清楚它或它的用途。我厌倦了谷歌搜索“双指针”和“指向类数组的指针”,但仍然找不到答案。

我想知道你为什么会使用这样的东西(实际使用)或引导我到一个为我解释这个的网站。谢谢你。

vendingMachine **va = new vendingMachine*[numMachines];
4

1 回答 1

6

所涉及的类型是一个类并不重要。它也可以是一个基本类型:

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。如果您现在从 更改回intvendingMachine您将拥有一个二维vendingMachine对象数组。

于 2012-11-03T10:39:42.747 回答