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

Các loại con trỏ (pointer types) trong ngôn ngữ C

Khái niệm

Con trỏ là biến lưu địa chỉ của biến khác. Cú pháp: pointer = &variable;

8 loại con trỏ phổ biến

  • Null pointer
  • Void pointer
  • Wild pointer
  • Dangling pointer
  • Complex pointer
  • Near pointer
  • Far pointer
  • Huge pointer

1. Null Pointer

Gán NULL khi khai báo. Luôn chứa giá trị 0. Dùng khi chưa gán địa chỉ cụ thể.

#include <stdio.h>
int main() {
    int *ptr = NULL;
    printf("Gia tri ptr: %d", ptr); // 0
    return 0;
}

2. Void Pointer

Con trỏ không có kiểu dữ liệu liên kết (generic pointer). Có thể chứa địa chỉ bất kỳ kiểu, ép kiểu khi dùng. Kích thước phụ thuộc trình biên dịch.

#include <stdio.h>
int main() {
    void *p = NULL;
    printf("Kich thuoc con tro void: %d", sizeof(p)); // ví dụ 8 byte (64-bit)
    return 0;
}

3. Wild Pointer

Con trỏ chưa khởi tạo (uninitialized). Trỏ đến địa chỉ tùy ý, gây crash hoặc hành vi không xác định. Cần thận trọng.

#include <stdio.h>
int main() {
    int *p; // wild pointer
    printf("%d", *p); // crash hoặc lỗi truy cập bộ nhớ
    return 0;
}

Các loại khác (tóm tắt)

  • Dangling pointer: Con trỏ trỏ đến vùng nhớ đã được giải phóng (free).
  • Complex pointer: Con trỏ phức tạp (con trỏ trỏ con trỏ, con trỏ hàm, mảng con trỏ...).
  • Near/Far/Huge pointer: Liên quan đến mô hình bộ nhớ phân đoạn (segmented memory) trong kiến trúc 16-bit cũ (DOS). Gần đây ít dùng.