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

Con trỏ và Mảng (Pointers and Arrays) trong C


Mối quan hệ Con trỏ - Mảng

Mảng cấp phát bộ nhớ liên tục. Địa chỉ cơ sở (base address) = địa chỉ phần tử đầu tiên.

Ví dụ: int a[5] = {10,20,30,40,50};

Nếu int *p; thì p = a hoặc p = &a[0];

Tăng con trỏ (p++) nhảy theo kích thước kiểu dữ liệu (scale factor). Với int 4 byte:

p     = &a[0] = 1000
p+1   = &a[1] = 1004
p+2   = &a[2] = 1008
p+3   = &a[3] = 1012
p+4   = &a[4] = 1016

Công thức: Địa chỉ a[i] = base + i * sizeof(int)

Giá trị: *(p+i) = a[i]

Chương trình minh họa

#include <stdio.h>
int main() {
    int a[5];
    int *p, i;
    printf("Nhap 5 so: ");
    for (i=0; i<5; i++) scanf("%d", &a[i]);
    p = &a[0];
    printf("Cac phan tu: ");
    for (i=0; i<5; i++) printf("%d ", *(p+i));
    return 0;
}

Kết quả

Nhap 5 so: 10 20 30 40 50
Cac phan tu: 10 20 30 40 50