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

อธิบายอายุการใช้งานของตัวแปรในภาษาซี


คลาสการจัดเก็บระบุขอบเขต อายุการใช้งาน และการเชื่อมโยงของตัวแปร

ในการกำหนดตัวแปรอย่างสมบูรณ์ เราต้องไม่เพียงแค่พูดถึง "ประเภท" เท่านั้น แต่ยังรวมถึงคลาสพื้นที่เก็บข้อมูลด้วย

ชื่อตัวแปรระบุตำแหน่งทางกายภาพบางส่วนภายในหน่วยความจำคอมพิวเตอร์ โดยที่ชุดของบิตจะถูกจัดสรรเพื่อจัดเก็บค่าของตัวแปร

คลาสพื้นที่เก็บข้อมูลบอกเราถึงปัจจัยต่อไปนี้

  • เก็บตัวแปรไว้ที่ใด (ในหน่วยความจำหรือ cpu register)
  • ค่าเริ่มต้นของตัวแปรจะเป็นอย่างไร หากไม่มีการกำหนดค่าเริ่มต้น
  • ขอบเขตของตัวแปรคืออะไร (เข้าถึงได้)
  • ชีวิตของตัวแปรคืออะไร?

อายุการใช้งาน

อายุการใช้งานของตัวแปรกำหนดระยะเวลาที่คอมพิวเตอร์จัดสรรหน่วยความจำให้ (ระยะเวลาระหว่างการจัดสรรและการจัดสรรคืนหน่วยความจำ)

ในภาษา C ตัวแปรสามารถมีอายุการใช้งานแบบอัตโนมัติ แบบคงที่ หรือแบบไดนามิก

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

คลาสการจัดเก็บ

มีสี่คลาสการจัดเก็บในภาษา C -

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

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับคลาสการจัดเก็บอัตโนมัติ -

#include<stdio.h>
main ( ){
   auto int i=1;{
      auto int i=2;{
         auto int i=3;
         printf ("%d",i)
      }
      printf("%d", i);
   }
   printf("%d", i);
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -

3 2 1

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับคลาสการจัดเก็บข้อมูลภายนอก -

#include<stdio.h>
extern int i =1; /* this ‘i’ is available throughout program */
main ( ){
   int i = 3; /* this ‘i' available only in main */
   printf ("%d", i);
   fun ( );
}
fun ( ) {
   printf ("%d", i);
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -

3 1