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

ความแตกต่างระหว่างตัวแปรสแตติก อัตโนมัติ โกลบอล และโลคัลใน C++


มีสองแนวคิดแยกกันที่นี่ -

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

ขอบเขต

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

ตัวอย่าง

#include <iostream>
using namespace std;

int main () {
   // Local variable declaration:
   int a, b;
   int c;

   // actual initialization
   a = 10;
   b = 20;
   c = a + b;

   cout << c;
   return 0;
}

สิ่งนี้จะให้ผลลัพธ์ -

ผลลัพธ์

30

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

ตัวอย่าง

#include <iostream>
using namespace std;

// Global variable declaration:
int g;

int main () {
   // Local variable declaration:
   int a, b;

   // actual initialization
   a = 10;
   b = 20;
   g = a + b;

   cout << g;
   return 0;
}

สิ่งนี้จะให้ผลลัพธ์ -

ผลลัพธ์

30

ระยะเวลาการจัดเก็บ

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

ตัวอย่าง

for (int i =0 0; i < 5; ++i) {
   int n = 0;
   printf("%d ", ++n); // prints 1 1 1 1 1 - the previous value is lost
}

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

for (int i = 0; i < 5; ++i) {
   static int n = 0;
   printf("%d ", ++n); // prints 1 2 3 4 5 - the value persists
}

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