Lớp lưu trữ mô tả đặc tính của biến/hàm: khả năng thấy (visibility), vòng đời, giá trị mặc định. Có 4 loại: auto, extern, static, register.
auto
Mặc định cho biến cục bộ. Tạo khi gọi hàm, hủy khi hàm kết thúc. Giá trị mặc định: rác.
- Phạm vi: Khối hàm.
- Vòng đời: Khối hàm.
Ví dụ
#include <stdio.h>
int main() {
auto int a = 28;
int b = 8; // ngầm auto
printf("Auto a: %d\n", a);
printf("Tong a+b: %d\n", a+b);
return 0;
}
extern
Biến toàn cục. Xem chi tiết ở bài Từ khóa extern.
- Phạm vi: Toàn chương trình.
- Giá trị mặc định: 0.
- Vòng đời: Cả chương trình.
static
Khởi tạo một lần. Giữ giá trị giữa các lần gọi hàm. Có thể định nghĩa trong hoặc ngoài hàm.
- Phạm vi: Khối (nếu trong hàm) hoặc file (nếu ngoài hàm).
- Giá trị mặc định: 0.
- Vòng đời: Cả chương trình.
Ví dụ
#include <stdio.h>
void func() {
static int count = 0;
count++;
printf("Lan goi: %d\n", count);
}
int main() {
func(); func(); func();
return 0;
}
Lan goi: 1 Lan goi: 2 Lan goi: 3
register
Xem chi tiết ở bài Từ khóa register.
- Phạm vi: Hàm.
- Giá trị mặc định: Rác.
- Vòng đời: Khối hàm.
Bảng so sánh
| Lớp | Phạm vi | Mặc định | Vòng đời |
|---|---|---|---|
| auto | Hàm | Rác | Hàm |
| extern | Toàn cục | 0 | Chương trình |
| static | Khối/File | 0 | Chương trình |
| register | Hàm | Rác | Hàm |