.使用malloc開闢一個3*4的二維陣列,並將內容初始化為0-11
阿新 • • 發佈:2019-01-22
方法一·:
很容易聯想到使用指標陣列
<pre name="code" class="cpp">#define ROW 3 #define COL 4 void Test4() { int(*p)[COL] = (int(*)[COL])malloc(sizeof(int)*ROW*COL); //注意是int(*p)[COL],<span style="color:#ff0000;">是COL不是ROW</span> for (int i = 0; i < ROW; ++i) { for (int j = 0; j < COL; ++j) { p[i][j] = i*COL + j; } } for (int i = 0; i < ROW; ++i) { for (int j = 0; j < COL; ++j) { printf("%d ", p[i][j]); } } }
方法二:
使用二級指標,就像虛表指標與虛表一樣(注意C語言中不能直接返回一個二維陣列,也不能是一個數組指標,所以若要動態開闢一個二維陣列並返回,那麼只能通過這種方式)
void Test() { int **p = (int **)malloc(sizeof(sizeof(int*)*ROW)); for (int i = 0; i < ROW; ++i) { p[i] = (int *)malloc(sizeof(int)*COL); } for (int i = 0; i < ROW; ++i) { for (int j = 0; j < COL; ++j) { p[i][j] = i*COL + j; } } for (int i = 0; i < ROW; ++i) { for (int j = 0; j < COL; ++j) { printf("%d ", p[i][j]); } } }