본문 바로가기

프로그래밍을 처음 시작합니까?

#04. 메모리의 종류

 

메모리의 종류 

 

앞서 메모리의 개념에 대해 알아봤습니다.

그럼 크게 메모리의 종류에 대해 간단하게 알아보도록 하겠습니다.

(큰 틀만 알아보도록 하겠습니다.)

 

숫자형 자료 : 대표적으로 int, float, shot.. 등등이 있으며(자세한건 C강좌에서..), OS는 저장된 자료가 숫자임을 알 수 있게 하며, 여유 메모리공간 중, 임의의 장소에 해당 공간을 할당합니다.

 

문자형 자료 : 최소 단위로 char가 있으며, OS는 저장될 자료가 문자 또는 문자열(String)임을 알 수 있도록 하며, 역시 여유 메모리공간 중, 임의의 장소에 해당 공간을 할당 합니다.

 

함수형 자료 : 함수형 자료라 함은, 함수를 생성할때, 해당 작업에 대한 결과 값을 어떠한 자료로 저장할 지를 지정합니다.(이것에 대한 종류는 역시 int, void, char등 프로그래머가 필요에따라 지정이 가능합니다.)

 

배열 : 사실 배열은 자료형이 아닙니다. 하지만 해당 자료형을 연속되게 메모리를 확보합니다.

예를들어 다음과 같은 코드가 있다고 가정하겠습니다.

 

int a[4];

 

위와 같은 코드는 숫자형 자료를 저장할 a를 4개 확보하라는 선언입니다.

(선언과 정의에 대해 메모리에 대한 강좌가 끝나는대로 설명하도록 하겠습니다.)

그러면 OS는 숫자를 저장할 int형 변수를 저장할 공간 a를

a[0], a[1], a[2], a[3]으로

0부터 시작하여 3까지 총 4개의 공간을 연속적으로 확보하게 되며, 해당 번호를 인덱스 번호라고 합니다.

(그리고 각각의 인덱스에 각각 다른(하지만 숫자인) 자료가 저장이 가능합니다.)

이 인덱스의 갯수는 제한이 없으며, 사용자가 원하는 만큼 지정이 가능합니다.

(단, 그만큼의 메모리 사용이 늘어나게 됩니다.)

배열은 일단 이정도만 알고 계셔도 됩니다.

 

구조체 자료형 : 구조체 자체는 자료형이 아닙니다. 하지만 자료형의 묶음입니다.

그리고 구조체 안의 묶음을 맴버변수라 하며, 맴버변수의 메모리 공간 할당은, 배열과 같이 연속적으로 나타납니다.

 

다음 예제에서 간단하게 구조체의 구조를 살펴 보도록 하겠습니다.

 

struct name1          // struct는 구조체라는 것이며, name1은 해당 구조체 자료형의 이름

{                          // 지역변수 시작

 int a;                   // 맴버변수로 int자료형 변수를 1개를 사용할 수 있도록 지정함 

 char b;                // 맴버번수로 char자료형 변수 1개를 사용할 수 있도록 지정함

}                          // 지역변수 끝

 

가장 먼저 구조체의 생성이란 프로그래머가 자신이 사용할 자료형을 새로 만드는 것이라고 생각하시면 됩니다. 그 이유는 아래에서 설명해 드리겠습니다.

 

struct는 해당 자료형은 구조체라는 것을 알립니다.

*그리고 name1이라는 자료형을 만듭니다.(이 부분은 매우 중요합니다.)

해당 구조체는 int자료형 변수 1개와 char자료형 변수 1개를 지정할 수 있습니다.

이렇게 하나의 사용자 정의 자료형에 맴버변수의 묶음을 가진 자료형이 구조체 입니다.

(클레스 역시 이와 같으나, 위와 같이 일반적인 맴버변수 이외에 함수변수도 추가 가능한것이 특징입니다.)

 

위 *에서 제가 name1이라는 자료형을 만듭니다.(이 부분은 매우 중요합니다.) 라고 설명했습니다.

 

그 이유가 똑같은 맴버변수를 지닌 자료형이라 하더라도, 구조체 생성시 그 이름이 다르면, 다른 자료형으로 판단하기 때문에, 전 과정에서 말씀드린 것처럼 서로 대입이 불가능합니다.

(하지만, 다른 이름의 구조체로 선언되어 있더라 하더라도, 맴버변수간 자료형이 같다면, 맴버변수간의 직접 대입은 가능합니다.)

 

본 게시판에 작성된 글은 전부, 너무 어렵게 생각하지 마시고, 그렇다는 개념만 잡아 두시기 바랍니다.