Static variables กำหนดด้วย static keyword เป็น variables ที่คงอยู่ใน memory ตลอดที่โปรแกรมรัน lifetime คือ entire program run ต่างจาก automatic variables ที่อยู่ใน memory เฉพาะตอนฟังก์ชันรัน และถูกทำลายตอนฟังก์ชันจบ
Function-level static variables ถูกสร้างและ initialize ครั้งแรกที่ถูกใช้งาน แม้ memory จะถูก allocate ตอน program load time
โปรแกรมสาธิต function-level static variables ใน C:
ตัวอย่าง
#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; }ผลลัพธ์
The output of the above program is as follows.
5 10 15 20 25
เข้าใจโปรแกรมข้างต้น:
Function func() มี static variable num initialized เป็น 0 เพิ่ม num 5 แล้วคืนค่า Code snippet:
int func() { static int num = 0; num += 5; return num; }ใน main() เรียก func() 5 ครั้งด้วย for loop พิมพ์ค่าที่คืนมา เนื่องจาก num เป็น static อยู่ใน memory ตลอดโปรแกรม ค่าสม่ำเสมอ Code snippet:
int main() { for(int i = 0; i<5; i++) { printf("%d\n", func()); } return 0; }