ขอบเขต (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
ตัวแปรกลางถูกกำหนดนอกฟังก์ชันทั้งหมด ปกติอยู่ด้านบนของโปรแกรม ตัวแปรกลางจะเก็บค่าไว้ตลอดอายุของโปรแกรม ตัวแปรกลางสามารถเข้าถึงได้จากฟังก์ชันใดก็ได้
ตัวอย่าง
#include <iostream>
using namespace std;
// ประกาศตัวแปรกลาง:
int g;
int main () {
// ประกาศตัวแปรท้องถิ่น:
int a, b;
// เริ่มต้นค่า
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
ผลลัพธ์
30
โปรแกรมอาจมีชื่อเดียวกันสำหรับตัวแปรท้องถิ่นและกลาง แต่ค่าของตัวแปรท้องถิ่นภายในฟังก์ชันจะมีความสำคัญกว่า สำหรับการเข้าถึงตัวแปรกลางที่มีชื่อเดียวกัน คุณจะต้องใช้ scope resolution operator (::)
ตัวอย่าง
#include <iostream>
using namespace std;
// ประกาศตัวแปรกลาง:
int g = 20;
int main () {
// ประกาศตัวแปรท้องถิ่น:
int g = 10;
cout << g; // ท้องถิ่น
cout << ::g; // กลาง
return 0;
}
ผลลัพธ์
10 20