[C++] การใช้งานตัวแปรที่มีขอบเขตแบบ Global


ตัวแปรที่มีขอบเขตแบบ Global หมายถึง ตัวแปรดังกล่าว สามารถถูกเรียกใช้ได้หลายฟังก์ชันในเวลาเดียวกัน การใช้งานตัวแปรในลักษณะนี้มีข้อดีข้อเสียดังนี้

ข้อดี
  1.  มีขอบเขตการเรียกใช้งาน มากกว่าการประกาศตัวแปรแบบปกติ
  2. สามารถใช้ตัวแปรแบบนี้ ส่งค่าระหว่างกันได้
ข้อเสีย
  1. เพราะความที่สามารถถูกเรียกใช้ได้หลายฟังก์ชัน จึงทำให้การควบคุมค่าที่จัดเก็บอยู่ ยากลำบากกว่าปกติ
จึงต้องมีความระมัดระวังและใช้เท่าที่จำเป็นเท่านั้น ต่อไปนี้เป็นตัวอย่างการเรียกใช้งานจาก 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 ชื่อซ้ำกัน ให้เรียกโดยใช้เครื่องหมาย :: กำกับหน้าตัวแปร Global

Ex3 เรียกตัวแปรที่ชื่อซ้ำ

#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
Previous
Next Post »