2012-11-03 41 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