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

Minh họa khái niệm con trỏ (pointer) trong ngôn ngữ C

Khái niệm

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

Cú pháp

pointer = &variable;

Chương trình minh họa

#include <stdio.h>

void main() {
    int a = 2;
    int *p;          // khai báo con trỏ int
    p = &a;          // p lưu địa chỉ của a

    printf("Kich thuoc int: %d\n", sizeof(int));           // 4
    printf("Dia chi cua %d la %d\n", a, p);                // địa chỉ
    printf("Gia tri tai %d la %d\n", a, *p);               // 2
    printf("Gia tri o dia chi tiep theo cua %d la %d\n", a, *(p+1)); // rác
    printf("Dia chi tiep theo cua %d la %d\n", a, (p+1));  // địa chỉ +4

    // Ép kiểu con trỏ sang char*
    char *p0;
    p0 = (char*)p;
    // a = 2 = 00000000 00000000 00000000 00000010 (binary)

    printf("Kich thuoc char: %d\n", sizeof(char));         // 1
    printf("Dia chi cua %d la %d\n", a, p0);               // cùng địa chỉ
    printf("Gia tri byte dau cua %d la %d\n", a, *p0);     // byte đầu: 2
    printf("Gia tri byte thu 2 cua %d la %d\n", a, *(p0+1)); // byte 2: 0
    printf("Dia chi byte thu 2 cua %d la %d\n", a, (p0+1)); // địa chỉ +1
}

Kết quả (địa chỉ có thể khác nhau)

Kich thuoc int: 4
Dia chi cua 2 la 6422028
Gia tri tai 2 la 2
Gia tri o dia chi tiep theo cua 2 la 463824
Dia chi tiep theo cua 2 la 6422032
Kich thuoc char: 1
Dia chi cua 2 la 6422028
Gia tri byte dau cua 2 la 2
Gia tri byte thu 2 cua 2 la 0
Dia chi byte thu 2 cua 2 la 6422029