您的位置:首页 > 编程语言 > C语言/C++

C++中使用malloc(), free()定义初始化一维、二维、三维数组

2018-01-28 21:28 519 查看
#include "stdio.h"
#include "stdlib.h"

int main()
{
printf("Hello main \n");

int Depth = 2;
int Height = 3;
int Width = 4;

//=========================================================//
//========================1D Array=========================//
int *array1D0 = NULL;
array1D0 = (int*)malloc(Width*sizeof(int));

printf("\nAccess array1D0 elements:\n");
for(int width=0; width<Width; width++)
{
array1D0[width] = width;
printf("%d ", array1D0[width]);
}
printf("\n");

//=========================================================//
//========================2D Array=========================//
int *array1D1 = NULL;
int **array2D1 = NULL;
array1D1 = (int*)malloc(Height*Width*sizeof(int));
array2D1 = (int**)malloc(Height*sizeof(int*));

for (int height = 0; height<Height; height++)
{
array2D1[height] = array1D1 + height*Width;
}

printf("\nAccess array2D1 elements:\n");
for (int height=0; height<Height; height++)
{
for (int width=0; width<Width; width++)
{
array2D1[height][width] = height+width;
printf("%d ", array2D1[height][width]);
}
printf("\n");
}

//========================================================//
//======================3D Array==========================//
int *array1D2 = NULL;
int **array2D2 = NULL;
int ***array3D = NULL;
array1D2 = (int*)malloc(Depth*Height*Width*sizeof(int));
array2D2 = (int**)malloc(Depth*Height*sizeof(int*));
array3D = (int***)malloc(Depth*sizeof(int**));

for (int height=0; height<Depth*Height; height++)
{
array2D2[height] = array1D2 + height*Width;
}
for (int depth=0; depth<Depth; depth++)
{
array3D[depth] = array2D2 + depth*Height;
}

printf("\nAccess array3D elements:\n");
for(int depth=0; depth<Depth; depth++)
{
printf("depth=%d\n",depth);
for(int height=0; height<Height; height++)
{
for(int width=0; width<Width; width++)
{
array3D[depth][height][width] = depth+height+width;
printf("%d ", array3D[depth][height][width]);
}
printf("\n");
}
printf("\n");
}

//================================================//
free(array1D0);
free(array1D1);
free(array2D1);
free(array1D2);
free(array2D2);
free(array3D);

printf("\nGoodbye main \n");

}


运行结果:

Hello main

Access array1D0 elements:
0 1 2 3

Access array2D1 elements:
0 1 2 3
1 2 3 4
2 3 4 5

Access array3D elements:
depth=0
0 1 2 3
1 2 3 4
2 3 4 5

depth=1
1 2 3 4
2 3 4 5
3 4 5 6

Goodbye main
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐