Biến static định nghĩa bằng từ khóa static. Chúng là biến nằm trong bộ nhớ suốt chương trình chạy (vòng đời = toàn bộ chạy chương trình). Khác biến tự động (automatic) chỉ nằm trong bộ nhớ khi hàm chạy và hủy khi hàm kết thúc.
Biến static cấp hàm (function-level static variables) được tạo và khởi tạo lần đầu tiên chúng được dùng, mặc dù bộ nhớ cho chúng cấp phát tại thời điểm tải chương trình.
Chương trình minh họa biến static cấp hàm C:
Ví dụ
#include<stdio.h>
int func() {
static int num = 0;
num += 5;
return num;
}
int main() {
for(int i = 0; i<5; i++) {
printf("%d\n", func());
}
return 0;
}Kết quả
Đầu ra chương trình:
5 10 15 20 25
Hiểu chương trình:
Hàm func() chứa biến static num khởi tạo 0. Tăng num 5 đơn vị và trả về giá trị. Đoạn mã:
int func() {
static int num = 0;
num += 5;
return num;
}Trong main(), gọi func() 5 lần qua vòng for, in giá trị trả về. Vì num static, nó ở trong bộ nhớ suốt chương trình chạy và cho giá trị nhất quán. Đoạn mã:
int main() {
for(int i = 0; i<5; i++) {
printf("%d\n", func());
}
return 0;
}