프로그래밍/참고

지역 변수 / 전역 변수

피씨컴 2013. 1. 31. 19:38
 

 

 

지역 변수와 전역 변수

   ☞ 지역 변수 : 사용할 변수가 함수 내부에 선언되어 일정 영역의 (    )안에서만 사용 할 수 있는 변수

   ☞ 전역 변수 : 프로그램 전반에 걸쳐 사용할 수 있는 변수

 

지역 변수와 전역 변수의 특징을 간단히 정리하면 아래 표와 같다.

 

구분

특징

지역변수

함수나 일정영역 내에서 선언된다.

함수가 종료되면 메모리에서 소멸된다. – 유통기한

매개변수도 지역변수에 포함된다.

초기화 하지 않으면 쓰레기 값을 갖는다.

전역변수

함수외부에서 선언되어 모든 함수에서 사용할 수 있다.

프로그램이 실행될 때 메모리가 할당되며 프로그램이 종료되어야 메모리에서 소멸된다. – 유통기한

초기화 하지 않으면 0으로 자동 초기화된다.

 ☞ 전역 변수와 같은 이름의 지역 변수는 자신의 영역에서 전역 변수보다 우선이다.

 

 

지역변수

- 함수내 혹은 블록내에서 선언되어 그 안에서만 사용 되는 변수

- 스택 영역에 저장되고, 함수 실행시에만 메모리를 갖는다.

- 별도의 초기식이 없으면 쓰레기 값이 저장

- 지역변수는 함수의 독립성을 증가 시키고 디버깅 효울을 증가 시킨다.

 

 

전역변수

 

- 함수 바깥에 선언;

 - 선언된 이 후에만 사용 가능하며, 초기화 하지 않아도 자동으로 0으로 초기화

 - 프로그램이 실행중에는 파괴 되지 않고, 메모리의 데이터 코드 영역에 저장된다.

 

    * 전역변수의 사용법

      1. 메인함수 보다 앞에 선언된 외부변수는 일반 변수 선언 처럼 쓴다.

      2. 외부 모듈에 선언된 외부변수를 사용시에는 extern 키워드를 사용 하여 함수 외곽에 명시 해야 한다.

  

              ex) 

                #include <stdio.h>

 

extern int Value; // 타 모듈(다른c파일)의 외부 변수

 

void main()

{

}

 

 

 정적변수

 

  - 데이터 코드 영역에 저장,실행중 항상 존재

  - 범위는 지역변수 처럼 함수 내부로 국한(반드시 그런 것은 아님)

  - 초기화 안될시 0으로 자동으로 초기화

  - 함수 호출시 단 한번만 초기화

  - 함수가 종료 되어도 그 값은 data영역에 존재, 프로그램이 종료 되어야 소멸