我记得在我的期末考试中看到这行代码,直到今天我还是无法弄清楚它的用途。我厌倦了搜索“双指针”和“指向数组类的指针”,仍然无法找到答案。双指向
我想知道为什么你会使用这样的东西(实际使用)或指导我到一个网站,为我解释这一点。谢谢。
vendingMachine **va = new vendingMachine*[numMachines];
我记得在我的期末考试中看到这行代码,直到今天我还是无法弄清楚它的用途。我厌倦了搜索“双指针”和“指向数组类的指针”,仍然无法找到答案。双指向
我想知道为什么你会使用这样的东西(实际使用)或指导我到一个网站,为我解释这一点。谢谢。
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
s。如果您现在从int
更改为vendingMachine
,则您将拥有一个vendingMachine
对象的二维数组。
二维数组自动售货机!我发现一个非常普遍的要求。好的答案顺便说一句。 – john
顺便说一句,“家庭作业”标签不应该再用于新的问题。只有那些仍然存在的旧问题。 –
尝试搜索'pointer to pointer'而不是 –