首页 > 代码库 > 动态分配多维数组

动态分配多维数组

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

动态分配多维数组