C语言如何利用三维数组存储多张地图,请问怎么存储一个长度可变的多维数组...

C/C++ code//在堆中开辟一个4×5的二维int数组

#include

#include

int **p;

int i,j;

void main() {

p=(int **)malloc(4*sizeof(int *));

if (NULL==p) return;

for (i=0;i<4;i++) {

p[i]=(int *)malloc(5*sizeof(int));

if (NULL==p[i]) return;

}

for (i=0;i<4;i++) {

for (j=0;j<5;j++) {

p[i][j]=i*5+j;

}

}

for (i=0;i<4;i++) {

for (j=0;j<5;j++) {

printf(" %2d",p[i][j]);

}

printf("\n");

}

for (i=0;i<4;i++) {

free(p[i]);

}

free(p);

}

// 0 1 2 3 4

// 5 6 7 8 9

// 10 11 12 13 14

// 15 16 17 18 19

//在堆中开辟一个3×4×5的3维int数组

#include

#include

int ***p;

int i,j,k;

void main() {

p=(int ***)malloc(3*sizeof(int **));

if (NULL==p) return;

for (i=0;i<3;i++) {

p[i]=(int **)malloc(4*sizeof(int *));

if (NULL==p[i]) return;

for (j=0;j<4;j++) {

p[i][j]=(int *)malloc(5*sizeof(int));

if (NULL==p[i][j]) return;

}

}

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

for (k=0;k<5;k++) {

p[i][j][k]=i*20+j*5+k;

}

}

}

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

for (k=0;k<5;k++) {

printf(" %2d",p[i][j][k]);

}

printf("\n");

}

printf("---------------\n");

}

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

free(p[i][j]);

}

free(p[i]);

}

free(p);

}

// 0 1 2 3 4

// 5 6 7 8 9

// 10 11 12 13 14

// 15 16 17 18 19

//---------------

// 20 21 22 23 24

// 25 26 27 28 29

// 30 31 32 33 34

// 35 36 37 38 39

//---------------

// 40 41 42 43 44

// 45 46 47 48 49

// 50 51 52 53 54

// 55 56 57 58 59

//---------------

//在堆中开辟一个2×3×4×5的4维int数组

#include

#include

int ****p;

int h,i,j,k;

void main() {

p=(int ****)malloc(2*sizeof(int ***));

if (NULL==p) return;

for (h=0;h<2;h++) {

p[h]=(int ***)malloc(3*sizeof(int **));

if (NULL==p[h]) return;

for (i=0;i<3;i++) {

p[h][i]=(int **)malloc(4*sizeof(int *));

if (NULL==p[h][i]) return;

for (j=0;j<4;j++) {

p[h][i][j]=(int *)malloc(5*sizeof(int));

if (NULL==p[h][i][j]) return;

}

}

}

for (h=0;h<2;h++) {

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

for (k=0;k<5;k++) {

p[h][i][j][k]=h*60+i*20+j*5+k;

}

}

}

}

for (h=0;h<2;h++) {

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

for (k=0;k<5;k++) {

printf(" %3d",p[h][i][j][k]);

}

printf("\n");

}

printf("--------------------\n");

}

printf("=======================\n");

}

for (h=0;h<2;h++) {

for (i=0;i<3;i++) {

for (j=0;j<4;j++) {

free(p[h][i][j]);

}

free(p[h][i]);

}

free(p[h]);

}

free(p);

}

// 0 1 2 3 4

// 5 6 7 8 9

// 10 11 12 13 14

// 15 16 17 18 19

//--------------------

// 20 21 22 23 24

// 25 26 27 28 29

// 30 31 32 33 34

// 35 36 37 38 39

//--------------------

// 40 41 42 43 44

// 45 46 47 48 49

// 50 51 52 53 54

// 55 56 57 58 59

//--------------------

//=======================

// 60 61 62 63 64

// 65 66 67 68 69

// 70 71 72 73 74

// 75 76 77 78 79

//--------------------

// 80 81 82 83 84

// 85 86 87 88 89

// 90 91 92 93 94

// 95 96 97 98 99

//--------------------

// 100 101 102 103 104

// 105 106 107 108 109

// 110 111 112 113 114

// 115 116 117 118 119

//--------------------

//=======================

//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值