(Data Structure) 기본적인 구조들

배열(Array)

연속적인 기억 공간을 차지하는 같은 자료 형들의 자료구조. 인덱스와 값의 쌍들로 이루어진 원소들의 집합

이라고 한다.

이미 배열은 여러번 사용해 보았지만 이번에 공부하면서 새로운 유형의 배열을 학습하게 되었다.

지금까지 내가 써본 배열은 1차원, 2차원 배열이었다.

가끔 이것에 대해 의문을 품은 적이 있다.

지금까지 배운 배열로는 행, 열. 이 두가지 축으로만 원소를 표현이 가능한데,

수학시간에 배운 좌표계 처럼 범위를 넓혀서는 표현 할 수 없나… 라는 생각을 했다.

물론 할 수 있었다. 컴퓨터는 생각이 빠른 넘이었다.

  • 3차원 배열
타입 배열이름[u₁][u₂][u₃];
int array [u₁][u₂][u₃];

와 같이 선언한다.

주의할 점은 가장 먼저 나오는 u₁ 이 ‘면’을 나타내고 뒷부분의 u₂, u₃ 가 각각 행, 열을 나타낸다는 것이다.

즉, 3차원 배열은 u₂ x u₃ 의 2차원 배열이 u₁ 만큼 있는 배열이 된다.

구조체(Structure)

여러개의 자료를 묶어서 하나의 이름으로 사용하고 싶은데 각각의 자료형이 같지 않은 경우 사용하는 것이 구조체이다.

그렇기 때문에 각 원소의 형이 다를 수 있다.

struct 구조체_이름{
    타입 멤버변수1;
    타입 멤버변수2;
    타입 멤버변수3;
} 변수_이름;

공용체(Union)

공용체는 동일한 기억장소에 서로 다른 타입의 멤버변수들에 의해 공유되도록 하는 매체이다.

구조체랑 비슷한 기능을 가지고 있다만, 차이점은

구조체가 멤버변수 각각의 메모리를 전부 할당하는 반면,

공용체는 멤버변수 여러개 중에서 가장 크기가 큰 자료 형에 따라 메모리를 할당한다. 그리고 이 메모리 공간은 공용체 내의 모든 멤버변수들이 공유 가능하다.

그러므로 하나의 멤버변수만 들어갈 수 있는 공간을 여러 변수가 나누어 돌아가며 쓴다고 생각하면 될것같다.

union 공용체_이름{
    타입 멤버변수1;
    타입 멤버변수2;
    타입 멤버변수3;
} 변수_이름;

구조체와 비슷한 형태를 가진다.

열거형(Enumeration)

이름으로 표현된 정수형 상수를 원소로 갖는 집합이다.

우리가 색깔을 말할때 쓰는 red, blue, yellow 같은 말은 컴퓨터가 알아들을 수 없으니

이름을 열거해 놓고 각각에 정수 값을 매김으로써 사용한다.

이를 통해 프로그램 구조를 명확하게 할 수 있다고 한다.

enum color {red, blue, yellow, white ,black} ;

처럼 선언할 수 있다.

이 경우

red 는 0

blue 는 1

yellow 는 2

white 는 3

black 은 4

의 값을 할당 받게 된다.

각각에 특정 값을 명시하여 사용할 수도 있다. 명시하지 않으면 상수의 값은 그 이전 상수의 값 + 1 으로 지정된다.

정리

  • 배열 : 같은 자료형들로 이루어진 자료구조.
  • 구조체 : 여러 다른 종류의 자료를 묶을때 쓰는 자료구조.
  • 공용체 : 여러 다른 종류의 자료를 묶을때 쓰는 자료구조. 가장 큰 자료형을 기준으로 생성한 메모리를 공용으로 사용
  • 열거형 : 이름으로 표현된 정수형 상수를 원소로 가짐.