전역변수
생명주기 : 프로그램이 시작되는 순간 메모리가 확보되고 프로그램이 종료될 때 제거된다.
적용범위 : 해당 프로그램 전영역에서 사용이 가능하다.
지역변수
생명주기 : 변수 선언시에 메모리가 확보되고 해당 지역이 끝날 때 제거된다. 지역은 중괄호{}로 표시를 한다.
적용범위 : 자기 소속 지역 내에서만 사용이 가능하다. { } 중괄호 내에서만 사용이 가능.
지역 정적변수 (생명주기 -> 전역변수, 적용범위 -> 지역변수)
생명주기 : 전역변수처럼 프로그램이 시작되는 순간에 메모리가 확보되며 프로그램을 종료 시켜야 메모리가 제거된다.
적용범위 : 지역변수와 마찬가지로 자기소속 내 (중괄호 내 { })에서만 사용이 가능하다.
#include <stdio.h>
int global_num = 100;
void main()
{
{
int areaNum = 200;
printf("%d\n", global_num);
printf("%d\n", areaNum);
}
printf("\n\n");
{
static int staticAreaNum = 300;
printf("%d\n", staticAreaNum);
}
printf("\n\n");
global_num = 1000;
printf("%d\n", global_num);
staticAreaNum = 3000;
areaNum = 2000;
printf("%d\n", area_num);
getchar();
}
코드를 살펴보면 global_num은 글로벌 변수(전역변수)이기 때문에 어디서든 사용이 가능하다. 하지만 중괄호 내에 선언한 변수 area_num과 static_area_num은 호출도 안되며 값을 대입 하는 것 또한 불가능하다. --> 마지막 코드 getchar(); 전에 작성한 3줄의 코드는 에러가 발생한다.