전역 범위
전역 범위는 블록 외부에 정의된 변수가 프로그램 끝까지 표시되도록 지정합니다.
예시
#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