Mảng 2D cấp phát động trong C dùng con trỏ đơn. Nghĩa là khối bộ nhớ kích thước row*column*dataTypeSize cấp phát bằng malloc và con trỏ toán học truy cập phần tử ma trận.
Chương trình minh họa:
Ví dụ
#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("Các phần tử ma trận:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("\n");
}
free(arr);
return 0;
}Kết quả chương trình:
Các phần tử ma trận: 0 1 2 1 2 3
Hiểu chương trình:
Mảng 2-D arr cấp phát động dùng malloc. Khởi tạo mảng 2-D dùng lồng vòng for và con trỏ toán học. Đoạn mã:
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;Hiển thị giá trị mảng 2-D. Cuối cùng giải phóng bộ nhớ động dùng free. Đoạn mã:
printf("Các phần tử ma trận:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
printf("%d ", *(arr + i*col + j));
}
printf("\n");
}
free(arr);