Lớp lưu trữ chỉ định phạm vi, vòng đời và liên kết biến.
Để định nghĩa đầy đủ biến, cần không chỉ 'kiểu' mà còn lớp lưu trữ.
Tên biến xác định vị trí vật lý trong bộ nhớ, nơi bit được cấp phát lưu giá trị.
Lớp lưu trữ cho biết:
- Biến lưu ở đâu (bộ nhớ hay thanh ghi CPU)?
- Giá trị mặc định nếu không khởi tạo?
- Phạm vi biến (truy cập ở đâu)?
- Vòng đời biến?
Liên kết (Binding)
Binding tìm khai báo/định nghĩa tương ứng cho việc sử dụng định danh.
- Phạm vi biến phải biết.
Cấu trúc khối là gì? Khối nào định danh là biến?
- Điều gì xảy ra nếu dùng cùng tên định danh?
C cấm cùng tên trong cùng phạm vi. Cùng tên dùng được ở phạm vi khác.
Ví dụ
double f, y;
int f() // loi
{ ... }
double y; // loi
Ví dụ
double y;
int f(){
double f; // hop le
int y; // hop le
}
Ví dụ
Chương trình C binding biến:
#include <stdio.h>
int i = 33;
main(){
extern int i;
{
int i = 22;
{
const volatile unsigned i = 11;
printf("i=%d\n", i);
}
printf("i=%d", i);
}
}
Đầu ra
Kết quả chạy chương trình:
i=11 i=22