사이드바 열기

'자료구조'에 해당되는 글 1건

  1. 2008.02.15 Storage Class
우리가 알고 있다시피 Invariable(상수) Variable(변수)에는 Data Type이 있습니다. Data Value에 따라서 Data Type를 지정해주어야 하는데, Invariable는 그 자신의 Value에 대한 표기로 Data Type를 나타낼 수 있기 때문에 Data Type를 선언해줄 필요는 없습니다. 그러나 Variable의 경우 Value가 언제든지 바뀔 수 있기 때문에 Data type를 선언해 주어야 합니다. 그런데 모든 Variable에는 Data Type 이외에 Storage Class라는 존재합니다.

 

Storage Class란 어떠한 Variable의 기억장소에 대한 지정과 지정한 Variable의 유효범위를 결정하는 것이 Storage Class입니다. 여기서 유효범위란 어떠한 Variable Program Code의 활용범위에 따른 분류와 기억 장소를 점유하는 시간에 따른 분류를 말하는 것입니다.

Variables의 성격은 변수를 선언하는 Storage Class Specifiers(기억부류 지정자)와 선언장소(함수의 내부이냐 외부이냐)에 의하여 결정됩니다.

 

하나의 함수는 ‘{‘ 으로 시작해서 ‘}’ 으로 끝이 나며, 이 내부에서 선언된 Variables는 이 함수 안에서만 사용이 가능하며, 이것을 Local Variables라 부릅니다. 또한 모든 함수의 외부에서 선언되어 파일 안의 모든 함수에서 사용이 가능한 Variables Global Variables 이라 부릅니다.

Global Variables는 초기화를 시키지 않아도 자동적으로 0으로 정해지며, Local Variables는 초기화가 되지 않고 임의의 값(Memory가 원래 가지고 있던 쓰레기 값)을 가지게 됩니다.

 

Storage Class Speciriers에 의한 분류는 아래의 표와 같습니다.

 

Storage Class

External Variables

Automatic Variables

Static Variables

Register Variables

지 정 자

extern

auto

static

Register


저장장소

정적

데이터영역


스택

정적

데이터영역

CPU

레지스터

선언위치

함수의 외부

함수의 내부

함수의 내부

함수의 내부


통용범위

프로그램

전체


함수의 내부


함수의 내부


함수의 내부


파괴시기

프로그램

종료시


함수 종료시


프로그램 종료


함수 종료시


초 기 값


0

초기화

되지 않음


0

초기화

되지 않음

 

1. External Variables(외부 변수)

하나의 프로그램을 짜기 위해 여러 사람이 각기 다른 파일에서 작업을 하거나, 혹은 Source를 분산 시킬 필요성이 있을 경우 사용하는 지정자입니다. 전역변수는 하나의 파일 안에서 모든 함수들이 사용할 수 있지만 다른 파일은 접근이 불가능 합니다. 이런 경우 External Variables으로 선언하여 다른 파일에서 접근이 가능하도록 알려주는 역할을 합니다.

 

2. Automatic Variables(자동 변수)

우리들이 흔히 사용하는 변수는 대부분 Automatic Varibles입니다. 기본적으로 함수의 내부에서 사용되며 임시적으로 사용하는 Variable입니다. 저장장소는 스택에 위치하며, 함수의 종류시 자동적으로 없어지며, 전역으로 사용 혹은 다른 함수에서 접근이 불가능 한 변수입니다.

 

3. Static Variables(정적 변수)

기본적으로 Automatic Variables와 비슷하게 함수안에서 쓰이며, 함수가 종료되어도 없어지지 않는 특징을 가지고 있습니다. 생성은 스택이 아닌 메모리의 정적구간에 생성이 되고 프로그램 자체가 끝날 때까지 보존되어지는 정적인 의미를 지닌 Variables입니다. Static Variables의 사용은 프로그램이 끝날 때까지 존재는 하되 소속된 함수가 실행될때만 접근이 가능하다는 특징을 지니고 있습니다.

 

4. Register Variables(레지스터 변수)

Register Variables는 위의 Variables와 다르게 RAM에 생성되지 않고 CPU Register에 생성되어지는 특징을 가지고 있습니다. CPU Rigister RAM보다 입출력이 빠르기 때문에 프로그램중에 자주 사용하는 값을 Register에 위치해 놓음으로써 수행 속도를 높일 수 있게 하는 Variables입니다. 주의할 점은 Variable Register Variables로 지정할 때 Register에 충분한 공간이 존재한다면 Register에 생성이 되지만, 공간이 충분하지 않는다면 Automatic Variable로 취급하여 메모리의 스택에 위치하게 됩니다.

Posted by LaLuna
이전페이지 1 다음페이지
위로

사이드바 열기