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

ตัวแปร ชนิดข้อมูล และขอบเขต (Scope) ใน C++

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

type variableName;

ชนิด (type) อาจเป็น primitive (int, bool, float, char, ฯลฯ), enumerated type, pointer ไปยังชนิดอื่น หรือชนิดที่ซับซ้อนมากกว่าที่กำหนดโดยโครงสร้างข้อมูล (data structure) หรือคลาส

ขอบเขตของตัวแปร (Variable Scope)

ขอบเขต (scope) คือบริเวณของโปรแกรม และคร่าวๆ ไปมี 3 สถานที่ที่ตัวแปรสามารถประกาศได้ -

  • ภายในฟังก์ชันหรือบล็อก เรียกว่า ตัวแปรท้องถิ่น (local variables)
  • ในการกำหนดพารามิเตอร์ของฟังก์ชัน เรียกว่า พารามิเตอร์ทางการ (formal parameters)
  • นอกฟังก์ชันทั้งหมด เรียกว่า ตัวแปรกลาง (global variables)

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

ตัวอย่าง

#include <iostream>
using namespace std;
int main () {
    // ประกาศตัวแปรท้องถิ่น:
    int a, b;
    int c;
    // เริ่มต้นค่า
    a = 10;
    b = 20;
    c = a + b;
    cout << c;
    return 0;
}

ผลลัพธ์

30

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

ตัวอย่าง

#include <iostream>
using namespace std;
// ประกาศตัวแปรกลาง:
int g;
int main () {
    // ประกาศตัวแปรท้องถิ่น:
    int a, b;
    // เริ่มต้นค่า
    a = 10;
    b = 20;
    g = a + b;
    cout << g;
    return 0;
}

ผลลัพธ์

30

โปรแกรมอาจมีชื่อเดียวกันสำหรับตัวแปรท้องถิ่นและกลาง แต่ค่าของตัวแปรท้องถิ่นภายในฟังก์ชันจะมีความสำคัญกว่า (take precedence) สำหรับการเข้าถึงตัวแปรกลางที่มีชื่อเดียวกัน คุณจะต้องใช้ scope resolution operator (::)

ตัวอย่าง

#include <iostream>
using namespace std;
// ประกาศตัวแปรกลาง:
int g = 20;
int main () {
    // ประกาศตัวแปรท้องถิ่น:
    int g = 10;
    cout << g;  // ท้องถิ่น
    cout << ::g; // กลาง
    return 0;
}

ผลลัพธ์

10 20