首页 > 代码库 > 动态分配多维数组
动态分配多维数组
//在堆中开辟一个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.//
另一篇文章: http://blog.csdn.net/supermegaboy/article/details/4854899
动态分配多维数组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。