此题要求深刻理解:1指针的概念,2指针的数组操作和静态的数组操作之间的区别。
下面的代码是动态申请三维数组Arr[a][b][c],
- *data ------- 指向存储数据的一维数组,总共有a*b*c个元素。
- **fp ------- 第一层指针,总共有a*b个元素,每个元素为指向data某一段首的指针。每一段长为c,因为三维数组相当于a*b个c组成。
- ***sp -------- 第二层指针,总共有a个元素,每个元素为指向fp某一段首的指针。每一段厂为b。
然后再分别把指针赋值上就行了。使用的时候,p[i][j] = *((*(p+i))+j).方便很多。
//以下代码copy right by Jack204.使用请注名出处。 #include#include /** *class A { *..... *///为简洁,先写完代码,再添加参数验证的异常处理。//申请成功返回>0,否则=0。int *** allocArr(int a, int b, int c){ int *data, **fp, ***sp; int i, j, *q; data = (int*)malloc(sizeof(int)*a*b*c); fp = (int**)malloc(sizeof(int*)*a*b); sp = (int***)malloc(sizeof(int**)*a); for(i=0; i