전역변수와 지역변수
기억 부류 | 전역 | 지역 | 정적 | 레지스터 |
지정자 | extern | auto | static | register |
저장 장소 | 정적 데이터 영역 | 스택 | 정적 데이터 영역 | CPU의 레지스터 |
선언 위치 | 함수의 외부 | 함수의 내부 | 함수의 내부 | 함수의 내부 |
통용 범위 | 프로그램 전체 | 함수의 내부 | 함수의 내부 | 함수의 내부 |
파괴 시기 | 프로그램 종료시 | 함수 종료시 | 프로그램 종료시 | 함수 종료시 |
초기값 | 0으로 초기화 | 초기화되지 않음 | 0으로 초기화 | 초기화되지 않음 |
예제
#include <Turboc.h>
void func();
int global; // 함수 외부에서 선언되었으므로 전역변수
void main()
{
int local; // main 함수의 지역변수
global=1; // 가능
local=2; // 가능
i=3; // 불가능
}
void func()
{
int i; // func 함수의 지역변수
global=1; // 가능
local=2; // 불가능
i=3; // 가능
}
#include <Turboc.h>
int global;
void main()
{
int local;
printf("global is %d, local is %d\n",global, local);
}
출력값 global is 0, local is -858993460