Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ตัวแปรสแตติกระดับฟังก์ชันจะเริ่มต้นใน C/C++ เมื่อใด


ตัวแปรสแตติกสามารถกำหนดได้โดยใช้คีย์เวิร์ดคงที่ เป็นตัวแปรที่ยังคงอยู่ในหน่วยความจำในขณะที่โปรแกรมกำลังทำงานอยู่ กล่าวคือ อายุการใช้งานคือโปรแกรมทั้งหมดที่ทำงานอยู่ ซึ่งแตกต่างจากตัวแปรอัตโนมัติเนื่องจากจะคงอยู่ในหน่วยความจำเฉพาะเมื่อฟังก์ชันกำลังทำงานและจะถูกทำลายเมื่อฟังก์ชันสิ้นสุด

ตัวแปรสแตติกระดับฟังก์ชันจะถูกสร้างขึ้นและเริ่มต้นในครั้งแรกที่มีการใช้งาน แม้ว่าหน่วยความจำสำหรับช่วงเวลานั้นจะได้รับการจัดสรรในเวลาที่โหลดโปรแกรม

โปรแกรมที่แสดงตัวแปรคงที่ระดับฟังก์ชันในภาษา 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;
}