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

คลาสการจัดเก็บข้อมูลที่แตกต่างกันในภาษา C


ปัญหา

คลาสการจัดเก็บที่แตกต่างกันในภาษา C มีอะไรบ้าง อธิบายด้วยโปรแกรมไหม

วิธีแก้ปัญหา

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

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

ต่อไปนี้เป็นคลาสการจัดเก็บใน C −

  • อัตโนมัติ
  • ภายนอก
  • คงที่
  • ลงทะเบียน

ตัวแปรอัตโนมัติ/ตัวแปรภายในเครื่อง

  • คำหลัก − อัตโนมัติ
  • เรียกอีกอย่างว่าตัวแปรท้องถิ่น
  • ขอบเขต
    • ขอบเขตของตัวแปรภายในมีอยู่ในบล็อกที่มีการประกาศ

    • ตัวแปรเหล่านี้ถูกประกาศภายในบล็อก

  • ค่าเริ่มต้น − ค่าขยะ

ตัวอย่าง

#include<stdio.h>
void 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

ตัวแปรส่วนกลาง/ตัวแปรภายนอก

  • คำหลัก − ภายนอก
  • ตัวแปรเหล่านี้ถูกประกาศนอกบล็อก ดังนั้นจึงเรียกอีกอย่างว่าตัวแปรส่วนกลาง

  • ขอบเขต − ขอบเขตของตัวแปรส่วนกลางสามารถใช้ได้ตลอดทั้งโปรแกรม

  • ค่าเริ่มต้น − ศูนย์

ตัวอย่าง

#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);
}

ผลลัพธ์

31

ตัวแปรคงที่

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

ตัวอย่าง

#include<stdio.h>
main (){
   inc ();
   inc ();
   inc ();
}
inc (){
   static int i =1;
   printf ("%d", i);
   i++;
}

ผลลัพธ์

1    2    3

ลงทะเบียนตัวแปร

  • คำหลัก − ลงทะเบียน
  • ค่าตัวแปร Register จะถูกเก็บไว้ในการลงทะเบียน CPU มากกว่าในหน่วยความจำที่เก็บตัวแปรปกติไว้

  • รีจิสเตอร์เป็นหน่วยเก็บข้อมูลชั่วคราวใน CPU

ตัวอย่าง

#include<stdio.h>
main (){
   register int i;
   for (i=1; i< =5; i++)
      printf ("%d",i);
}

ผลลัพธ์

1 2 3 4 5