2012-11-03 42 views
2

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

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

vendingMachine **va = new vendingMachine*[numMachines]; 
+0

顺便说一句,“家庭作业”标签不应该再用于新的问题。只有那些仍然存在的旧问题。 –

+0

尝试搜索'pointer to pointer'而不是 –

回答

4

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

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对象的二维数组。

+0

二维数组自动售货机!我发现一个非常普遍的要求。好的答案顺便说一句。 – john