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

Từ khóa "register" trong C

Từ khóa register gợi ý trình biên dịch lưu biến trong thanh ghi CPU thay vì RAM. Biến truy cập nhanh hơn. Không thể lấy địa chỉ của biến register (không dùng &).

Đặc điểm

  • Phạm vi: Cục bộ trong hàm.
  • Giá trị mặc định: Rác (garbage).
  • Vòng đời: Kết thúc khối lệnh chứa nó.

Ví dụ

#include <stdio.h>
int main() {
    register char x = 'S';
    register int a = 10;
    auto int b = 8;
    printf("Gia tri register char: %c\n", x);
    printf("Tong auto + register: %d\n", (a + b));
    return 0;
}
Gia tri register char: S
Tong auto + register: 18

Register với con trỏ

Có thể dùng register cho con trỏ. Con trỏ có thể giữ địa chỉ ô nhớ, không gây lỗi.

#include <stdio.h>
int main() {
    int i = 10;
    register int *a = &i;
    printf("Gia tri con tro: %d\n", *a);
    return 0;
}
Gia tri con tro: 10

Lưu ý hiện đại: Trình biên dịch hiện đại (GCC, Clang, MSVC) tự tối ưu hóa việc đưa biến vào thanh ghi tốt hơn gợi ý thủ công. Từ khóa register hiện chủ yếu mang ý nghĩa ngữ nghĩa: cam kết không lấy địa chỉ biến.