ตัวแปรที่มีขอบเขตแบบ Global หมายถึง ตัวแปรดังกล่าว สามารถถูกเรียกใช้ได้หลายฟังก์ชันในเวลาเดียวกัน การใช้งานตัวแปรในลักษณะนี้มีข้อดีข้อเสียดังนี้
ข้อดี
- มีขอบเขตการเรียกใช้งาน มากกว่าการประกาศตัวแปรแบบปกติ
- สามารถใช้ตัวแปรแบบนี้ ส่งค่าระหว่างกันได้
ข้อเสีย
- เพราะความที่สามารถถูกเรียกใช้ได้หลายฟังก์ชัน จึงทำให้การควบคุมค่าที่จัดเก็บอยู่ ยากลำบากกว่าปกติ
จึงต้องมีความระมัดระวังและใช้เท่าที่จำเป็นเท่านั้น ต่อไปนี้เป็นตัวอย่างการเรียกใช้งานจาก 2 ฟังก์ชัน
Ex Global Variable
#include <iostream>
using namespace std;
char strFullname[] = "John Doe";
void ShowFullname()
{
cout << "ShowFullname : " << strFullname << endl;
}
void DisplayFullname()
{
cout << "DisplayFullname : " << strFullname << endl;
}
int main(int argc, char** argv)
{
ShowFullname();
DisplayFullname();
system("pause");
return 0;
}
Result:
ShowFullname : John Doe
DisplayFullname : John Doe
Ex2 Deposit Money
#include <iostream>
using namespace std;
int balance;
void ShowCurrentBalance()
{
cout << "Your balance is : " << balance << endl;
}
void Deposit(int money)
{
if(money <= 0) {
cout << "Invalid number!" << endl;
} else {
balance = balance + money;
ShowCurrentBalance() ;
}
}
int main()
{
int myDeposit = 10000;
Deposit(myDeposit);
return 0;
}
Result:
Your balance is : 10000
ข้อสังเกต จะเห็นได้ว่า ตัวอย่างนี้มีการเปลี่ยนแปลงค่าตัวแปรคล้ายตัวอย่าง Pass by Value/Reference ข้อแตกต่างก็คือ ตัวอย่างนี้ เป็นการทำกับตัวแปร balance ซึ่งเป็นคนละตัวแปรกับ money ที่เราสร้างขึ้น ส่วนในตัวอย่าง Pass by Value/Reference นั้น เป็นการส่งตัวแปรที่เราสร้างขึ้น (money) ไปดำเนินเปลี่ยนค่าของตัวมันเอง
การกำหนดให้ใช้ค่าจากตัวแปรแบบ Global
กรณีตัวแปร Global และ Local ชื่อซ้ำกัน ให้เรียกโดยใช้เครื่องหมาย :: กำกับหน้าตัวแปร GlobalEx3 เรียกตัวแปรที่ชื่อซ้ำ
#include <iostream>
using namespace std;
int price = 300;
int main()
{
int price = 275;
cout << "Global price = " << ::price << endl;
cout << "Local price = " << price << endl;
return 0;
}
Result:
Global price = 300
Local price = 275
Sign up here with your email
ConversionConversion EmoticonEmoticon