ขอบเขต (Scope) คือบริเวณของโปรแกรม โดยคร่าวๆ มี 3 สถานที่ที่ตัวแปรสามารถประกาศได้:
- ภายในฟังก์ชันหรือบล็อก เรียกว่า ตัวแปรท้องถิ่น (Local Variables)
- ในนิยามพารามิเตอร์ของฟังก์ชัน เรียกว่า พารามิเตอร์ทางการ (Formal Parameters)
- นอกเหนือจากฟังก์ชันทั้งหมด เรียกว่า ตัวแปรกลาง (Global Variables)
เราจะเรียนรู้ฟังก์ชันและพารามิเตอร์ในบทต่อไป ตอนนี้มาอธิบายตัวแปรท้องถิ่นและกลาง
ตัวแปรท้องถิ่น (Local Variables)
ตัวแปรที่ประกาศภายในฟังก์ชันหรือบล็อก เป็นตัวแปรท้องถิ่น ใช้ได้เฉพาะคำสั่งภายในฟังก์ชันหรือบล็อกนั้นๆ ไม่รู้จักจากฟังก์ชันภายนอก
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int a, b, c; // Local variable declaration
a = 10; b = 20; c = a + b; // actual initialization
cout << c;
return 0;
}ตัวแปรกลาง (Global Variables)
ตัวแปรกลางประกาศนอกฟังก์ชันทั้งหมด มักอยู่ด้านบนของโปรแกรม คงค่าตลอดอายุของโปรแกรม เข้าถึงได้จากฟังก์ชันใดๆ
ตัวอย่าง
#include <iostream>
using namespace std;
int g; // Global variable declaration
int main() {
int a, b; // Local variable declaration
a = 10; b = 20; g = a + b;
cout << g;
return 0;
}โปรแกรมอาจมีชื่อตัวแปรท้องถิ่นและกลางเหมือนกัน แต่ค่าตัวแปรท้องถิ่นภายในฟังก์ชันจะมีความสำคัญกว่า
ตัวอย่าง
#include <iostream>
using namespace std;
int g = 20; // Global
int main() {
int g = 10; // Local
cout << g; // แสดง 10
return 0;
}ผลลัพธ์
10
การเริ่มต้นค่า (Initializing) ตัวแปรท้องถิ่นและกลาง
ตัวแปรท้องถิ่นเมื่อประกาศแล้ว ไม่ได้ถูกเริ่มต้นค่าอัตโนมัติ ต้องเริ่มต้นเอง ตัวแปรกลางจะถูกเริ่มต้นอัตโนมัติโดยระบบ:
| ชนิดข้อมูล | ค่าเริ่มต้น |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |