ขอบเขตทั่วโลก
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