1. 자동 변수와 자동 배열
함수내부에서 정의되는 변수 또는 배열(형식인수 포함)
정의된 변수는 그 함수 내부에서만 사용
함수호출 했을 때만 사용 호출 끝나면 사라지고 메모리 반환
반면에 자동배열을 부분적으로 초기화하면 나머진 0으로 초기화
2. 외부변수와 외부배열
함수 밖에서 정의된 변수 또는 배열
외부변수는 그 변수 다음에 오는 모든 함수에 통용
프로그램이 실행되는 동안 계속 유지
선언되는 순간 0으로 초기화
3. 정적변수와 정적배열
함수 내부에서 키워드 static을 이용해서 정의(외부변수, 외부배열처럼 행동)
외부배열처럼 함수가 종료된 뒤에도 계속 유지
선언되는 순간 0으로 초기화
기억 부류 |
전역 - 외부 |
지역 - 자동 |
정적 |
레지스터(희망적) |
지정자 |
extern |
auto |
static |
register |
저장 장소 |
정적 데이터 영역 |
스택 |
정적 데이터 영역 |
CPU의 레지스터 |
선언 위치 |
함수의 외부 |
함수의 내부 |
함수의 내부 |
함수의 내부 |
통용 범위 |
프로그램 전체 |
함수의 내부 |
함수의 내부 |
함수의 내부 |
파괴 시기 |
프로그램 종료시 |
함수 종료시 |
프로그램 종료시 |
함수 종료시 |
초기값 |
0으로 초기화 |
초기화되지 않음 |
0으로 초기화 |
초기화되지 않음 |
레지스터는 실제로 레지스터 변수로 되거나 레지스터에 공간이 없다면 자동변수로 넘어감
'c' 카테고리의 다른 글
const 와 포인터 (0) | 2012.11.13 |
---|---|
함수의 전달인수 배열 (0) | 2012.11.12 |
switch (0) | 2012.11.09 |
continue, go to , break (0) | 2012.11.08 |
개행문자 입력 유무 (0) | 2012.11.07 |