Có bốn lớp lưu trữ trong ngôn ngữ C:
- auto
- extern
- static
- register
Biến register
Từ khóa là register.
Giá trị biến register được lưu trong thanh ghi CPU, thay vì trong bộ nhớ như biến thông thường.
Thanh ghi là đơn vị lưu trữ tạm thời trong CPU.
Chúng cho phép thời gian truy cập nhanh hơn cho biến register so với biến thông thường.
Ví dụ 1
Chương trình C sau minh họa lớp lưu trữ register:
#include <stdio.h>
main() {
register int i;
for (i=1; i<=5; i++)
printf("%d ", i);
}
Kết quả
Đầu ra như sau:
1 2 3 4 5
Ví dụ 2
Xét chương trình C khác cho lớp lưu trữ register:
#include <stdio.h>
int main() {
register int a;
printf("%d", a); // in giá trị mặc định của a = 0
}
Kết quả
Đầu ra như sau:
0
Ví dụ 3
Chương trình C thứ ba cho lớp lưu trữ static (lưu ý: ví dụ này thực tế minh họa lỗi khi lấy địa chỉ biến register):
#include <stdio.h>
int main() {
register int i = 10;
int *p;
// int *p = &i; // lỗi xảy ra, ở đây ta cố gắng yêu cầu địa chỉ của biến register
printf("Gia tri cua i: %d", *p);
printf("Dia chi cua i: %u", p);
}
Kết quả
Đầu ra như sau:
Lỗi: add of reg var?