如何在 C 中動態分配一個 2D 陣列?
可以使用一個指標在 C 中動態分配一個 2D 陣列。這意味著可以使用 malloc 分配大小為 row*column*dataTypeSize 的記憶體塊,可以使用指標演算法訪問矩陣元素。
以下是展示該過程的程式。
示例
#include <stdio.h>
#include <stdlib.h>
int main() {
int row = 2, col = 3;
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
*(arr + i*col + j) = i + j;
printf("The matrix elements are:
");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("
");
}
free(arr);
return 0;
}
上述程式的輸出如下。
The matrix elements are: 0 1 2 1 2 3
現在讓我們瞭解一下上面的程式。
使用 malloc 動態分配 2-D 陣列 arr。然後使用巢狀 for 迴圈和指標演算法初始化 2-D 陣列。顯示此內容的程式碼片段如下。
int row = 2, col = 3;
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
*(arr + i*col + j) = i + j;
然後顯示 2-D 陣列的值。最後,使用 free 釋放動態分配的記憶體。顯示此內容的程式碼片段如下。
printf("The matrix elements are:
");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("
");
}
free(arr);
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP