Trong ngôn ngữ C, chỉ định lớp lưu trữ register** yêu cầu trình biên dịch lưu trữ đối tượng trong thanh ghi (register) của máy. Thường dùng cho các biến được truy cập nhiều (như biến điều khiển vòng lặp) để tối ưu hiệu năng bằng cách giảm thời gian truy cập. Tuy nhiên, trình biên dịch không bắt buộc phải tuân theo yêu cầu này. Do kích thước và số lượng thanh ghi hạn chế, chỉ một vài biến thực sự được đặt vào thanh ghi.
Trong C++, register đơn giản là một từ khóa dự trữ không sử dụng, nhưng được giữ lại để tương thích cú pháp với mã C.
Lưu ý quan trọng
- Bạn không thể lấy địa chỉ của biến
register(vì nó có thể không có địa chỉ bộ nhớ). - Trình biên dịch hiện đại thường tự động tối ưu hóa tốt hơn việc đặt biến vào thanh ghi thủ công.
- Từ C++17,
registerđã bị loại bỏ (deprecated) và sẽ bị xóa trong các chuẩn tương lai.