/*动态构建三维数组内存分配函数*/
/*
* pArr: 指向三维数组首地址
* x: 三维数组第一维元素个数
* y: 三维数组第二维元素个数
* z: 三维数组第三维元素个数
*/
void Create3DActiveArray(int ***pArr, int x, int y, int z)
{
int i, j, k;
pArr = (int ***)malloc(x * sizeof(int **));
for (i = 0; i < x; i++)
{
pArr[i] = (int **)malloc(y * sizeof(int *));
for (j = 0; j < y; j++)
{
pArr[i][j] = (int *)malloc(z * sizeof(int));
for (k = 0; k < z; k++)
{
pArr[i][j][k] = i + j + k;
}
}
}
}
-----------------------------------------------------华丽的分割线-------------------------------------------------------
-
void Free3DActiveArray(int ***pArr, int x, int y) { int i, j, k; for (i = 0; i < x; i++) { for (j = 0; j < y; j++) { free(pArr[i][j]); pArr[i][j] = 0; } free(pArr[i]); pArr[i] = 0; } free(pArr);
- ---------------------------------------华丽的分割线-----------------------------
-
#include <stdio.h> #include <malloc.h> void Malloc3DActiveArray(int *** pArr, int x, int y, int z); void Free3DActiveArray(int *** pArr, int x, int y); //void Display3DArray(int *** pArr, int x, int y, int z); int main(void) { int x, y, z; int *** array = NULL; printf("输入一维长度: "); scanf("%d",&x); printf("输入二维长度: "); scanf("%d",&y); printf("输入三维长度: "); scanf("%d",&z); Malloc3DActiveArray(array, x, y, z); Free3DActiveArray(array, x, y); array = NULL; return 0; } void Malloc3DActiveArray(int *** pArr, int x, int y, int z) { int i, j, k; pArr = (int ***)malloc(x * sizeof(int **)); for (i = 0; i < x; i++) { pArr[i] = (int **)malloc(y * sizeof(int *)); for (j = 0; j < y; j++) { pArr[i][j] = (int *)malloc(z * sizeof(int)); for (k = 0; k < z; k++) { pArr[i][j][k] = i + j + k + 1; printf("%d ", pArr[i][j][k]); } printf("\n"); } printf("\n"); } } void Free3DActiveArray(int *** pArr, int x, int y) { int i, j; for (i = 0; i < x; i++) { for (j = 0; j < y; j++) { free(pArr[i][j]); pArr[i][j] = 0; } free(pArr[i]); pArr[i] = 0; } free(pArr); }