您的位置:首页 > 其它

[转载]动态分配多维数组

2015-01-29 10:57 246 查看
//在堆中开辟一个4×5的二维int数组
2.#include <stdio.h>
3.#include <malloc.h>
4.int **p;
5.int i,j;
6.void main() {
7.    p=(int **)malloc(4*sizeof(int *));
8.    if (NULL==p) return;
9.    for (i=0;i<4;i++) {
10.        p[i]=(int *)malloc(5*sizeof(int));
11.        if (NULL==p[i]) return;
12.    }
13.    for (i=0;i<4;i++) {
14.        for (j=0;j<5;j++) {
15.            p[i][j]=i*5+j;
16.        }
17.    }
18.    for (i=0;i<4;i++) {
19.        for (j=0;j<5;j++) {
20.            printf(" %2d",p[i][j]);
21.        }
22.        printf("\n");
23.    }
24.    for (i=0;i<4;i++) {
25.        free(p[i]);
26.    }
27.    free(p);
28.}
29.//  0  1  2  3  4
30.//  5  6  7  8  9
31.// 10 11 12 13 14
32.// 15 16 17 18 19
33.
34.//在堆中开辟一个3×4×5的3维int数组
35.#include <stdio.h>
36.#include <malloc.h>
37.int ***p;
38.int i,j,k;
39.void main() {
40.    p=(int ***)malloc(3*sizeof(int **));
41.    if (NULL==p) return;
42.    for (i=0;i<3;i++) {
43.        p[i]=(int **)malloc(4*sizeof(int *));
44.        if (NULL==p[i]) return;
45.        for (j=0;j<4;j++) {
46.            p[i][j]=(int *)malloc(5*sizeof(int));
47.            if (NULL==p[i][j]) return;
48.        }
49.    }
50.    for (i=0;i<3;i++) {
51.        for (j=0;j<4;j++) {
52.            for (k=0;k<5;k++) {
53.                p[i][j][k]=i*20+j*5+k;
54.            }
55.        }
56.    }
57.    for (i=0;i<3;i++) {
58.        for (j=0;j<4;j++) {
59.            for (k=0;k<5;k++) {
60.                printf(" %2d",p[i][j][k]);
61.            }
62.            printf("\n");
63.        }
64.        printf("---------------\n");
65.    }
66.    for (i=0;i<3;i++) {
67.        for (j=0;j<4;j++) {
68.            free(p[i][j]);
69.        }
70.        free(p[i]);
71.    }
72.    free(p);
73.}
74.//  0  1  2  3  4
75.//  5  6  7  8  9
76.// 10 11 12 13 14
77.// 15 16 17 18 19
78.//---------------
79.// 20 21 22 23 24
80.// 25 26 27 28 29
81.// 30 31 32 33 34
82.// 35 36 37 38 39
83.//---------------
84.// 40 41 42 43 44
85.// 45 46 47 48 49
86.// 50 51 52 53 54
87.// 55 56 57 58 59
88.//---------------
89.
90.//在堆中开辟一个2×3×4×5的4维int数组
91.#include <stdio.h>
92.#include <malloc.h>
93.int ****p;
94.int h,i,j,k;
95.void main() {
96.    p=(int ****)malloc(2*sizeof(int ***));
97.    if (NULL==p) return;
98.    for (h=0;h<2;h++) {
99.        p[h]=(int ***)malloc(3*sizeof(int **));
100.        if (NULL==p[h]) return;
101.        for (i=0;i<3;i++) {
102.            p[h][i]=(int **)malloc(4*sizeof(int *));
103.            if (NULL==p[h][i]) return;
104.            for (j=0;j<4;j++) {
105.                p[h][i][j]=(int *)malloc(5*sizeof(int));
106.                if (NULL==p[h][i][j]) return;
107.            }
108.        }
109.    }
110.    for (h=0;h<2;h++) {
111.        for (i=0;i<3;i++) {
112.            for (j=0;j<4;j++) {
113.                for (k=0;k<5;k++) {
114.                    p[h][i][j][k]=h*60+i*20+j*5+k;
115.                }
116.            }
117.        }
118.    }
119.    for (h=0;h<2;h++) {
120.        for (i=0;i<3;i++) {
121.            for (j=0;j<4;j++) {
122.                for (k=0;k<5;k++) {
123.                    printf(" %3d",p[h][i][j][k]);
124.                }
125.                printf("\n");
126.            }
127.            printf("--------------------\n");
128.        }
129.        printf("=======================\n");
130.    }
131.    for (h=0;h<2;h++) {
132.        for (i=0;i<3;i++) {
133.            for (j=0;j<4;j++) {
134.                free(p[h][i][j]);
135.            }
136.            free(p[h][i]);
137.        }
138.        free(p[h]);
139.    }
140.    free(p);
141.}
142.//   0   1   2   3   4
143.//   5   6   7   8   9
144.//  10  11  12  13  14
145.//  15  16  17  18  19
146.//--------------------
147.//  20  21  22  23  24
148.//  25  26  27  28  29
149.//  30  31  32  33  34
150.//  35  36  37  38  39
151.//--------------------
152.//  40  41  42  43  44
153.//  45  46  47  48  49
154.//  50  51  52  53  54
155.//  55  56  57  58  59
156.//--------------------
157.//=======================
158.//  60  61  62  63  64
159.//  65  66  67  68  69
160.//  70  71  72  73  74
161.//  75  76  77  78  79
162.//--------------------
163.//  80  81  82  83  84
164.//  85  86  87  88  89
165.//  90  91  92  93  94
166.//  95  96  97  98  99
167.//--------------------
168.// 100 101 102 103 104
169.// 105 106 107 108 109
170.// 110 111 112 113 114
171.// 115 116 117 118 119
172.//--------------------
173.//=======================
174.//


View Code

另一篇文章: http://blog.csdn.net/supermegaboy/article/details/4854899
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: