ขอบเขตทั่วโลก
Global scope ระบุว่าตัวแปรที่กำหนดนอกบล็อกสามารถมองเห็นได้จนถึงจุดสิ้นสุดของโปรแกรม
ตัวอย่าง
#include<stdio.h>
int c= 30; /* global area */
main (){
int a = 10;
printf (“a=%d, c=%d” a,c);
fun ();
}
fun (){
printf (“c=%d”,c);
} ผลลัพธ์
a =10, c = 30 c = 30
ขอบเขตท้องถิ่น
ขอบเขตภายในระบุว่าตัวแปรที่กำหนดภายในบล็อกจะมองเห็นได้เฉพาะในบล็อกนั้นและมองไม่เห็นภายนอกบล็อก
ตัวแปรที่ประกาศในบล็อกหรือฟังก์ชัน (ในเครื่อง) สามารถเข้าถึงได้ภายในบล็อกนั้นและไม่มีอยู่ภายนอกนั้น
ตัวอย่าง
#include<stdio.h>
main (){
int i = 1;// local scope
printf ("%d",i);
}
{
int j=2; //local scope
printf("%d",j);
}
} ผลลัพธ์
1 2
แม้ว่าตัวแปรจะถูกประกาศซ้ำในบล็อกที่เกี่ยวข้องกันและมีชื่อเดียวกัน แต่ก็ถือว่าแตกต่างกัน
ตัวอย่าง
#include<stdio.h>
main (){
{
int i = 1; //variable with same name
printf ("%d",i);
}
{
int i =2; // variable with same name
printf ("%d",i);
}
} ผลลัพธ์
1 2
การประกาศตัวแปรภายในบล็อกที่มีชื่อเดียวกับตัวแปรในบล็อกภายนอกจะปิดบังตัวแปรบล็อกภายนอกขณะดำเนินการบล็อกภายใน
ตัวอย่าง
#include<stdio.h>
main (){
int i = 1;{
int i = 2;
printf (“%d”,i);
}
} ผลลัพธ์
2
ตัวแปรที่ประกาศภายนอกบล็อกภายในสามารถเข้าถึงได้จากบล็อกที่ซ้อนกัน โดยที่ตัวแปรเหล่านี้จะไม่ประกาศภายในบล็อกภายใน
ตัวอย่าง
#include<stdio.h>
main (){
int i = 1;{
int j = 2;
printf ("%d",j);
printf ("%d",i);
}
} ผลลัพธ์
2 1