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

Giải thích con trỏ và mảng hai chiều trong ngôn ngữ C


Con trỏ là một biến lưu trữ địa chỉ của một biến khác.

Đặc điểm

  • Con trỏ tiết kiệm không gian bộ nhớ.

  • Thời gian thực thi của con trỏ nhanh hơn do truy cập trực tiếp vị trí bộ nhớ.

  • Với sự giúp đỡ của con trỏ, bộ nhớ được truy cập hiệu quả, tức là bộ nhớ được cấp phát và giải phóng động.

  • Con trỏ được sử dụng với các cấu trúc dữ liệu.

Con trỏ và mảng hai chiều

Cấp phát bộ nhớ cho mảng hai chiều như sau:

int a[3][3] = {1,2,3,4,5,6,7,8,9};

Giải thích con trỏ và mảng hai chiều trong ngôn ngữ C

Giải thích con trỏ và mảng hai chiều trong ngôn ngữ C

a[1][2] = *(1234 + 1*3+2) = *(1234 + 3+2) = *(1234 + 5*4) // 4 là hệ số tỷ lệ = *(1234+20) = *(1254) a[1][2] = 6

Ví dụ

Chương trình C sau minh họa cho con trỏ và mảng hai chiều:

#include <stdio.h>
main() {
    int a[3][3], i, j;
    int *p;
    clrscr();
    printf("Nhap cac phan tu cua mang 2D");
    for (i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    p = &a[0][0];
    printf("Cac phan tu cua mang 2d la");
    for (i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            printf("%d \t", *(p+i*3+j));
        }
        printf("\n");
    }
    getch();
}

Kết quả

Khi chương trình trên được thực thi, nó cho kết quả sau:

nhap cac phan tu cua mang 2D 1 2 3 4 5 6 7 8 9
Cac phan tu cua mang 2D la 1 2 3 4 5 6 7 8 9