etc
posted by Junction 2012. 3. 27. 10:16

변수는 프로그램이 실행되는 동안 에 변할 수 있는 값으로서 기억 장소의 주소를 의미하며 프로그램이 실행되는 과정에서 변수에 상수값이 기억된다. 따라서 프로그램에서 사용되는 모든 변수는 기억될 상수와 동일한 형으로 선언되어야 한다. 이때 그 변수에 기억된 상수값을 참조할 수 있는 범위를 그 변수의 유효 범위라고 한다.

내부 변수와 외부 변수
함수 내부에서 선언된 변수를 내부 변수( internal variable )라고 하며 함수 외부에서 선언된 변수를 외부 변수(  external variable )라고 한다. 내부 변수의 유효 범위는 지역적(local)으로서 그 변수가 선언된 함수 혹은 블록 내부에서만 참조할 수 있지만 외부 변수의 유효 범위는 전역적(global)이기 때문에 프로그램 어느 곳에도 참조할 수 있다. 특별히 다른 화일에 선언된 외부 변수를 참조할 경우와 같은 화일 내에서 아직 선언되지 않은 외부 변수를 참조할 경우에는 반드시 extern 선언자와 함께 선언되어야 한다.

자동 변수
자동 변수란 프로그램이 실행되는 동안 변수가 기억 장소를 함수내에서만 사용되는 변수로 다음과 같은 특징을 갖고 있다.
auto 선언자와 함께 선언되며 생략할 수도 있다.
함수 혹은 블록 내부에서 선언되기 때문에 유효 범위는 지역적이다.
변수에 대한 기억 장소는 선언된 함수 혹은 블록이 실행될 때 스택 영역에 확보되기 때문에 그 함수 혹은 블록의 실행이 끝나면 자동적으로 소멸된다.

정적 변수
정적 변수란 프로그램이 실행되는 동안 변수가 기억 장소에 존재하는 항구적인 변수로 다음과 같은 특징을 갖고 있다.
static 선언자와 함께 선언된다.
유효 범위는 지역적임며 외부 변수를 정적 변수로 선언할 경우 변수의 유효범위가 축소되어 다른 화일에서는 참조할 수 없게 된다.
변수에 대한 기억 장소는 프로그램이 실행될 때 데이타 영역에 확보되기 때문에 프로그램의 실행이 끝날 때에 비로소 소멸된다.
변수를 선언할 때 초기값을 부여하면 프로그램이 실행될 때, 단 한 번만 초기화가 이루어진다.

레지스터 변수
레지스터 변수는 자동 변수와 그 기능은 같으나 단지 제한된 조건내에서 변수의 속도가 빠르게 실행되고, 다음과 같은 특징을 갖고 있다.
register 선언자와 함께 선언된다.
변수에 대한 기억 장소로서 CPU 내부의 레지스터를 사용하기 때문에 처리속도가 빨라진다.
사용할 수 있는 레지스터의 한계를 벗어나면 자동 변수로 간주된다.
레지스터의 크기는 1워드이므로 문자형, 정수형 및 포인터형에만 사용되며 적용 범위는 자동 변수나 함수의 매개 변수로 제한된다.

'etc' 카테고리의 다른 글

표준 입출력 함수  (0) 2012.04.03
연산자 ( Operator )  (0) 2012.04.02
상수 ( Constant )  (0) 2012.03.26
C프로그래램의 구조  (0) 2012.03.26
private file  (0) 2012.03.25