Khi dùng từ khóa static, biến/thành viên dữ liệu/hàm không thể sửa đổi lại (về mặt lưu trữ). Nó được cấp phát suốt vòng đời chương trình. Hàm static có thể gọi trực tiếp qua tên class (trong C++).
Biến static chỉ được khởi tạo một lần. Compiler giữ biến đến hết chương trình. Biến static có thể định nghĩa bên trong hoặc ngoài hàm. Chúng cục bộ trong block. Giá trị mặc định là 0.
Cú pháp
static datatype variable_name = value;
Trong đó: datatype – kiểu dữ liệu; variable_name – tên biến; value – giá trị khởi tạo (mặc định 0).
Ví dụ
#include <stdio.h>
int main() {
static int a = 8;
int b = 10;
printf("Gia tri bien static: %d\n", a);
printf("Gia tri bien non-static: %d\n", b);
return 0;
}
Kết quả
Gia tri bien static: 8
Gia tri bien non-static: 10
Giải thích: Hai biến được khai báo, một static một không. Cả hai khởi tạo giá trị và in ra.
Đặc điểm quan trọng
- Local static: Giữ giá trị giữa các lần gọi hàm, khởi tạo 1 lần.
- Global static: Giới hạn scope trong file (internal linkage).
- Zero-initialization: Tự động = 0 nếu không gán giá trị.
- Lưu trữ: Data segment (initialized hoặc BSS).