码迷,mamicode.com
首页 > 编程语言 > 详细

动态分配多维数组

时间:2015-01-29 12:03:14      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
//在堆中开辟一个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

动态分配多维数组

标签:

原文地址:http://www.cnblogs.com/Acg-Check/p/4259128.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!