Lớp lưu trữ chỉ định phạm vi, vòng đời, liên kết biến.
Định nghĩa đầy đủ biến cần kiểu và lớp lưu trữ.
Tên biến xác định vị trí bộ nhớ vật lý lưu giá trị.
Lớp lưu trữ cho biết:
- Lưu ở đâu (bộ nhớ/CPU register)?
- Giá trị mặc định?
- Phạm vi truy cập?
- Vòng đời?
Vòng đời (Lifetime)
Vòng đời biến xác định thời gian bộ nhớ được cấp phát (từ cấp phát đến giải phóng).
Trong C, biến có vòng đời tự động (automatic), tĩnh (static) hoặc động (dynamic).
- Tự động - Tạo khi gặp khai báo, hủy khi thoát khối.
- Tĩnh - Tạo khi khai báo lần đầu, hủy khi chương trình kết thúc.
- Động - Cấp phát/giải phóng qua hàm quản lý bộ nhớ.
Các lớp lưu trữ
4 lớp lưu trữ trong C:
| Lớp | Khu vực lưu | Giá trị mặc định | Vòng đời | Phạm vi | Từ khóa |
|---|---|---|---|---|---|
| Tự động | Bộ nhớ | Rác | Trong khối | Cục bộ | auto |
| Thanh ghi | CPU register | Rác | Trong khối | Cục bộ | register |
| Tĩnh | Bộ nhớ | 0 | Giữa các lần gọi hàm | Cục bộ | static |
| Ngoại部 | Bộ nhớ | Rác | Cả chương trình | Toàn cục | extern |
Ví dụ
Chương trình C lớp tự động:
#include <stdio.h>
main(){
auto int i = 1;
{ auto int i = 2;
{ auto int i = 3; printf("%d", i); }
printf("%d", i);
}
printf("%d", i);
}
Đầu ra
3 2 1
Ví dụ
Chương trình C lớp ngoại部:
#include <stdio.h>
extern int i = 1;
main(){
int i = 3;
printf("%d", i);
fun();
}
fun(){ printf("%d", i); }
Đầu ra
3 1