Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cấp phát động mảng 2D trong C


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);