지역 변수 / 전역 변수
지역 변수와 전역 변수
☞ 지역 변수 : 사용할 변수가 함수 내부에 선언되어 일정 영역의 ( )안에서만 사용 할 수 있는 변수
☞ 전역 변수 : 프로그램 전반에 걸쳐 사용할 수 있는 변수
지역 변수와 전역 변수의 특징을 간단히 정리하면 아래 표와 같다.
구분 |
특징 |
지역변수 |
함수나 일정영역 내에서 선언된다. |
함수가 종료되면 메모리에서 소멸된다. – 유통기한 | |
매개변수도 지역변수에 포함된다. | |
초기화 하지 않으면 쓰레기 값을 갖는다. | |
전역변수 |
함수외부에서 선언되어 모든 함수에서 사용할 수 있다. |
프로그램이 실행될 때 메모리가 할당되며 프로그램이 종료되어야 메모리에서 소멸된다. – 유통기한 | |
초기화 하지 않으면 0으로 자동 초기화된다. |
☞ 전역 변수와 같은 이름의 지역 변수는 자신의 영역에서 전역 변수보다 우선이다.
지역변수
- 함수내 혹은 블록내에서 선언되어 그 안에서만 사용 되는 변수
- 스택 영역에 저장되고, 함수 실행시에만 메모리를 갖는다.
- 별도의 초기식이 없으면 쓰레기 값이 저장
- 지역변수는 함수의 독립성을 증가 시키고 디버깅 효울을 증가 시킨다.
전역변수
- 함수 바깥에 선언;
- 선언된 이 후에만 사용 가능하며, 초기화 하지 않아도 자동으로 0으로 초기화
- 프로그램이 실행중에는 파괴 되지 않고, 메모리의 데이터 코드 영역에 저장된다.
* 전역변수의 사용법
1. 메인함수 보다 앞에 선언된 외부변수는 일반 변수 선언 처럼 쓴다.
2. 외부 모듈에 선언된 외부변수를 사용시에는 extern 키워드를 사용 하여 함수 외곽에 명시 해야 한다.
ex)
#include <stdio.h>
extern int Value; // 타 모듈(다른c파일)의 외부 변수
void main()
{
}
정적변수
- 데이터 코드 영역에 저장,실행중 항상 존재
- 범위는 지역변수 처럼 함수 내부로 국한(반드시 그런 것은 아님)
- 초기화 안될시 0으로 자동으로 초기화
- 함수 호출시 단 한번만 초기화
- 함수가 종료 되어도 그 값은 data영역에 존재, 프로그램이 종료 되어야 소멸