Biến tĩnh có thể được xác định bằng cách sử dụng từ khóa static. Chúng là các biến vẫn còn trong bộ nhớ trong khi chương trình đang chạy, tức là thời gian tồn tại của chúng là toàn bộ chương trình chạy. Điều này khác với các biến tự động vì chúng chỉ lưu trong bộ nhớ khi hàm của chúng đang chạy và bị hủy khi hàm kết thúc.
Các biến tĩnh cấp hàm được tạo và khởi tạo lần đầu tiên chúng được sử dụng mặc dù bộ nhớ cho sau đó được cấp phát tại thời gian tải chương trình.
Một chương trình chứng minh các biến tĩnh cấp hàm trong C được đưa ra như sau -
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; }
Đầu ra
Kết quả của chương trình trên như sau.
5 10 15 20 25
Bây giờ chúng ta hãy hiểu chương trình trên.
Hàm func () chứa một biến tĩnh num được khởi tạo bằng 0. Sau đó, num được tăng lên 5 và giá trị của nó được trả về. Đoạn mã hiển thị điều này như sau.
int func() { static int num = 0; num += 5; return num; }
Trong hàm main (), hàm func () được gọi 5 lần bằng vòng lặp for và nó trả về giá trị num được in ra. Vì num là một biến tĩnh, nó vẫn ở trong bộ nhớ khi chương trình đang chạy và nó cung cấp các giá trị nhất quán. Đoạn mã hiển thị điều này như sau.
int main() { for(int i = 0; i<5; i++) { printf("%d\n", func()); } return 0; }