ตัวแปรสแตติกสามารถกำหนดได้โดยใช้คีย์เวิร์ดคงที่ เป็นตัวแปรที่ยังคงอยู่ในหน่วยความจำในขณะที่โปรแกรมกำลังทำงานอยู่ กล่าวคือ อายุการใช้งานคือโปรแกรมทั้งหมดที่ทำงานอยู่ ซึ่งแตกต่างจากตัวแปรอัตโนมัติเนื่องจากจะคงอยู่ในหน่วยความจำเฉพาะเมื่อฟังก์ชันกำลังทำงานและจะถูกทำลายเมื่อฟังก์ชันสิ้นสุด
ตัวแปรสแตติกระดับฟังก์ชันจะถูกสร้างขึ้นและเริ่มต้นในครั้งแรกที่มีการใช้งาน แม้ว่าหน่วยความจำสำหรับช่วงเวลานั้นจะได้รับการจัดสรรในเวลาที่โหลดโปรแกรม
โปรแกรมที่แสดงตัวแปรคงที่ระดับฟังก์ชันในภาษา 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; }
ผลลัพธ์
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้
5 10 15 20 25
ตอนนี้เรามาทำความเข้าใจโปรแกรมข้างต้นกัน
ฟังก์ชั่น func() มีตัวแปรคงที่ num ที่เริ่มต้นเป็น 0 จากนั้น num จะเพิ่มขึ้น 5 และค่าจะถูกส่งกลับ ข้อมูลโค้ดที่แสดงเป็นดังนี้
int func() { static int num = 0; num += 5; return num; }
ในฟังก์ชัน main() ฟังก์ชัน func() จะถูกเรียก 5 ครั้งโดยใช้ for loop และส่งกลับค่าของ num ที่พิมพ์ออกมา เนื่องจาก num เป็นตัวแปรแบบสแตติก จึงยังคงอยู่ในหน่วยความจำในขณะที่โปรแกรมกำลังทำงานและให้ค่าที่สม่ำเสมอ ข้อมูลโค้ดที่แสดงเป็นดังนี้
int main() { for(int i = 0; i<5; i++) { printf("%d\n", func()); } return 0; }