一個好的技巧破譯陳述這樣是採取一步一步,並建立
這是double數組
double array[5];
陣列也是一個指針,所以這是該相同(但是第一個大小是已知爲五在第二它可能指向任何數目)
double *array;
`
現在讓我們嘗試一些更普遍
T *a;
是指向一個或多個TS所以T a[x];
其中x是一個數字
這裏建立T **a;
是指向一個或多個指針指向一個或多個TS
這意味着*a
是指向一個或多個Ts和類似
*a = new T[5]
是有效的但a = new T[5]
不是一個正確的人會a= new T*[5]
創建5個指針TS
所以回到你原來的例子int ** arr[10];
這裏ARR點到10 INT **這意味着arr[0] = new int*[5]
的靜態數組是一個有效的聲明下面是有效的C++
int ** arr[10];
arr[0] = new int*[5];
arr[0][1] = new int[5];
arr[0][1][0] = 4;
std::cout << arr[0][1][0] << std::endl; // prints 4
delete [] arr[0][1];
delete [] arr[0];
//note that arr doesn't need to be deleted as it wasn't dynamically allocated
使用[**順時針螺旋規則**](http://c-faq.com/decl/spiral.anderson.html) –
'雙pointer'是混亂的,人們可能會認爲這是一個指向'double'的指針,使用'pointer to pointer'。 –
http://cdn.memegenerator.net/instances/400x/25611683.jpg –