国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 如何在C中動態(tài)分配二維數(shù)組

如何在C中動態(tài)分配二維數(shù)組 時間:2018-09-29      來源:未知

在C語言中如何動態(tài)申請連續(xù)的二維數(shù)組?梢圆捎枚嗌暾堃恍┲羔,然后這一些指針分別指向后面數(shù)據(jù)區(qū)中對應(yīng)的位置,如一個3*4的int類型數(shù)組,我們先申請大小為sizeof(int*) * 3 + 3 * 4 * sizeof(int)的一維數(shù)組設(shè)為arr。然后arr[0]存放指向arr + sizeof(int*) * 3這個位置的指針,arr[1]存放指向arr + sizeof(int*) * 3 + 4 * sizeof(int)這個位置的指針, arr[2]存放指向arr + sizeof(int*) * 3 + 2 * 4 * sizeof(int)這個位置的指針。

即先通過malloc申請所有要使用的空間使之連續(xù),再建立其之間聯(lián)系形成二維數(shù)組。

1. //C語言中動態(tài)的申請二維數(shù)組 malloc free  

2. #include <stdio.h>  

3. #include <stdlib.h>  

4. #include <string.h>  

5. //動態(tài)申請二維數(shù)組  

6. typedef int T  

7. T** malloc_Array2D(int row, int col)  

8. {  

9.     int size = sizeof(T);  

10.     int point_size = sizeof(T*);  

11.     //先申請內(nèi)存,其中point_size * row表示存放row個行指針  

12.     T **arr = (T **) malloc(point_size * row + size * row * col);  

13.     if (arr != NULL)  

14.     {     

15.         memset(arr, 0, point_size * row + size * row * col);  

16.         T *head = (T*)((int)arr + point_size * row);  

17.         while (row--)  

18.             arr[row] = (T*)((int)head + row * col * size);  

19.     }  

20.     return (T**)arr;  

21. }  

22. //釋放二維數(shù)組  

23. void free_Aarray2D(void **arr)  

24. {  

25.     if (arr != NULL)  

26.         free(arr);  

27. }  

28. int main()  

29. {  

30.     printf("  C語言中動態(tài)的申請二維數(shù)組 malloc free\n");    

31.     printf(" -- by MoreWindows( //blog.csdn.net/MoreWindows ) --\n\n");  

32.

33.     printf("請輸入行列(以空格分開): ");  

34.     int nRow, nCol;  

35.     scanf("%d %d", &nRow, &nCol);  

36.

37.     //動態(tài)申請連續(xù)的二維數(shù)組  

38.     T **p = malloc_Array2D (nRow, nCol);  

39.

40.     //為二維數(shù)組賦值     

41.     int i, j;     

42.     for (i = 0; i < nRow; i++)  

43.         for (j = 0; j < nCol; j++)  

44.             p[i][j] = i + j;  

45.

46.     //輸出二維數(shù)組      

47.     for (i = 0; i < nRow; i++)  

48.     {  

49.         for (j = 0; j < nCol; j++)  

50.             printf("%4d ", p[i][j]);  

51.         putchar('\n');  

52.     }  

53.

54.     free_Aarray2D((void**)p);  

55.     return 0;  

56.

上一篇:Keepalive機制

下一篇:指針數(shù)組與數(shù)組指針

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5,京公海網(wǎng)安備11010802025203號

回到頂部