자료구조(2) - C의 기본 자료구조 복습

배열, 구조체, 문자열, 공용체 복습

Featured image

🔚 짧게 하는 복습

✅ 1. ADT를 이해한다.

✅ 2. 자료구조를 이해한다.

✅ 3. ADT와 자료구조의 차이를 이해한다.

혹시 기억이 안 난다면, 다시 돌아가자


앞으로 본격적인 자료구조를 다루기 전에, 우리가 배웠던 C에서 지원해주는 기본 자료구조들을 복습해보자.

C는 기본 자료형으로 정수형, 실수형, 문자형, 포인터형이 있고, 기본 자료구조로는 배열, 구조체, 문자열, 공용체가 있었다.

(이들을 자료구조가 아니라 유저 정의 자료형으로 보는 관점도 있지만, 우리는 자료구조로 보겠다.)


배열이란?

배열은 연속적인 공간에 특정한 한 가지 기본 자료형 혹은 자료구조를 저장하는 자료구조이다.

배열의 가장 큰 특징으로는, 연속적인, 한 가지 유형의 원소, 마지막으로는 원소 최댓값의 존재(그 이상으로는 인덱싱 불가능)이다.

메모리 구조도 원소의 인덱스 순서대로 메모리에 연속적으로 저장이 되는 모습이다.


구조체란?

구조체란 연속적인 공간여러 가지 기본 자료형이나 자료구조를 저장해서 마치 하나의 자료형처럼 사용하는 자료구조이다.

구조체의 가장 큰 특징은, 연속적인, 여러 가지 기본 자료형이나 자료구조, 하나의 자료형처럼이다.

메모리 구조는 배열처럼 원소가 연속적으로 저장된다.

하지만 빈 곳인 패딩때문에 같은 원소라도 메모리가 다를 수 있다.

다시 말해 패딩 최적화가 가능하다.


문자열

문자열이란 단어나 문장처럼 문자 하나가 아니라 문자 여러 개를 하나로 다루어야 할 때, 마치 하나의 자료형처럼 다루는 자료구조이다.

문자열은 2가지 방법으로 다룰 수 있는데, 하나는 문자를 보관한 배열로 볼 수 있고 다른 하나는 리터럴 상수로써 사용하는 방법이 있다.

첫 번째 방법은 주로 수정을 해야 하는 상황에 쓰이고, 두 번째 방법은 말 그대로 상수로써 사용할 때 쓰인다.

메모리 구조의 특징으로는, 전자는 배열이 기본 성질이라서 stack 영역에 연속적인 메모리에 인덱스대로 저장이 되고 후자는 상수가 기본 성질이라서 상수가 저장되는 text 영역에 저장이 된다.


공용체

공용체란 여러 가지 자료형하나의 메모리 공간에서 사용하는 자료구조이다.

그렇기에, 한 번에는 하나의 값만 참조할 수 있다는 제약이 존재한다.

메모리를 높은 수준으로 최적화 해야한다면 고민해볼 만한 특수한 자료구조이다.


📖 오늘의 핵심(다 알기 전까지는 넘어가지 말자❗)

✅ 1. C의 기본 자료형과 기본 자료구조의 종류를 정확하게 알자.

✅ 2. C에서 지원하는 기본 자료구조의 특징과 메모리상 특징을 안다.

⚠️ 이번 글을 읽으면서 조금이라도 이해가 안되는 게 있다면 아랫글을 다시 읽어보길 바란다.

  1. 배열의 메모리 구조

  2. 전체 메모리 구조(stack, text 영역)

  3. C 언어(24) - 구조체

  4. C 언어(25) - 구조체 포인터

  5. C 언어(26) - 공용체