歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C/C++動態分配二維數組

一:C中動態分配二維數組

(1)內存不連續的分配   

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #define M 3
  4. #define N 3
  5. // 這樣在同一個數組內是連續分配的,但是實際上是不連續分配的
  6. int main(int argc , char*argv[])
  7. {
  8. int i ,j ;
  9. int **matric ;
  10. matric = (int**)malloc(M*sizeof(int*));
  11. for(i = 0 ; i<M ; i++)
  12. *(matric+i) = (int*)malloc(N*sizeof(int));
  13. for(i = 0 ; i<M ; i++)
  14. for(j=0 ; j<N ; j++)
  15. {
  16. printf("Please entry the %d value:\n",i*N+j);
  17. scanf("%d",(*(matric+i)+j));
  18. }
  19. for(i = 0 ; i<M ; i++)
  20. {
  21. switch(i)
  22. {
  23. case 0 :
  24. printf("第一行數組元素:\n");
  25. break ;
  26. case 1:
  27. printf("第二行數組元素:\n") ;
  28. break ;
  29. case 2:
  30. printf("第三行數組元素:\n") ;
  31. break;
  32. }
  33. for(j = 0 ; j<N ; j++)
  34. {
  35. printf("The values of %d elements are:%d\n",i*N+j,*(*(matric+i)+j));
  36. printf("The pointer position is:%x\n",(*(matric+i)+j)) ;
  37. }
  38. }
  39. for(i = 0 ;i<M ; i++)
  40. {
  41. free(*(matric+i));
  42. }
  43. free(matric) ;
  44. return 0 ;
  45. }

運行結果為:

可以明確看出內存是不連續的。

Copyright © Linux教程網 All Rights Reserved