一个好的技巧破译陈述这样是采取一步一步,并建立
这是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 –