ตัวแปรโลคอล โกลบอล ภาษา C

ขอบเขตในการเขียนโปรแกรมใด ๆ คือขอบเขตของโปรแกรมที่ตัวแปรที่กำหนดไว้สามารถมีอยู่ได้และไม่สามารถเข้าถึงได้นอกตัวแปรนั้น มีสามแห่งที่สามารถประกาศตัวแปรในภาษาซีได้ −

  • ภายในฟังก์ชันหรือบล็อกที่เรียกว่าตัวแปรโลคอล (Local)

  • นอกฟังก์ชันทั้งหมดที่เรียกว่าตัวแปรโกลบอล (Global

  • ในนิยามของพารามิเตอร์ฟังก์ชันที่เรียกว่าพารามิเตอร์ที่เป็นทางการ (Formal


ให้เราเข้าใจว่า ตัวแปรโลคอล (Local) และ ตัวแปรโกลบอล (Global) คืออะไร และพารามิเตอร์ที่เป็นทางการ (formal) คืออะไร

ตัวแปรโลคอล (Local)


ตัวแปรที่ประกาศภายในฟังก์ชันหรือบล็อกเรียกว่าตัวแปรโลคอล สามารถใช้โดยคำสั่งที่อยู่ภายในฟังก์ชันหรือบล็อกของโค้ดเท่านั้น ตัวแปรโลคอลไม่รู้จักฟังก์ชันภายนอกของตนเอง ตัวอย่างต่อไปนี้แสดงวิธีการใช้ ตัวแปรโลคอล  ตัวแปร a, b และ c ทั้งหมดนี้เป็นฟังก์ชัน local to main()

#include <stdio.h>
 
int main () {

  /* local variable declaration */
  int a, b;
  int c;
 
  /* actual initialization */
  a = 10;
  b = 20;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
 
  return 0;
}


ตัวแปรโกลบอล (Global)


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

ตัวแปรโกลบอลสามารถเข้าถึงได้โดยฟังก์ชันใดก็ได้ กล่าวคือ ตัวแปรโกลบอลสามารถใช้ได้ทั่วทั้งโปรแกรมของคุณหลังจากการประกาศ โปรแกรมต่อไปนี้แสดงวิธีการใช้ ตัวแปรโกลบอล ในโปรแกรม

#include <stdio.h>
 
/* global variable declaration */
int g;
 
int main () {

  /* local variable declaration */
  int a, b;
 
  /* actual initialization */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}


โปรแกรมสามารถมีชื่อเดียวกันสำหรับตัวแปรโลคอล (Local) และตัวแปรโกลบอล (Global) แต่ค่าของตัวแปรโลคอลภายในฟังก์ชันจะถูกนำมาใช้ตามความชอบ นี่คือตัวอย่าง −

#include <stdio.h>
 
/* global variable declaration */
int g = 20;
 
int main () {

  /* local variable declaration */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}


เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

value of g = 10


พารามิเตอร์ที่เป็นทางการ (Formal Parameters)


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

#include <stdio.h>
 
/* global variable declaration */
int a = 20;
 
int main () {

  /* local variable declaration in main function */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);

  return 0;
}

/* function to add two integers */
int sum(int a, int b) {

   printf ("value of a in sum() = %d\n",  a);
   printf ("value of b in sum() = %d\n",  b);

   return a + b;
}


เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30


การเริ่มต้น ตัวแปรโลคอลและ โกลบอล


เมื่อมีการกำหนดตัวแปร โลคอล ตัวแปรนั้นจะไม่เริ่มต้น โดยระบบ คุณต้องเริ่มต้นด้วยตัวเอง แต่ระบบจะเริ่มต้นตัวแปร โกลบอล โดยอัตโนมัติเมื่อคุณกำหนดตัวแปรดังนี้ −

Data TypeInitial Default Value
int0
char‘\0’
float0
double0
pointerNULL


แนวปฏิบัติในการเขียนโปรแกรมที่ดีคือการเริ่มต้นตัวแปรอย่างเหมาะสม มิฉะนั้น โปรแกรมของคุณอาจสร้างผลลัพธ์ที่ไม่คาดคิด เนื่องจากตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้นจะรับค่าขยะบางส่วนที่มีอยู่แล้วที่ตำแหน่งหน่วยความจำ

Leave a Reply

Your email address will not be published. Required fields are marked *