我記得在我的期末考試中看到這行代碼,直到今天我還是無法弄清楚它的用途。我厭倦了搜索「雙指針」和「指向數組類的指針」,仍然無法找到答案。雙指向
我想知道爲什麼你會使用這樣的東西(實際使用)或指導我到一個網站,爲我解釋這一點。謝謝。
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'而不是 –