자료구조[1] Basics

‍박성령·2024년 10월 1일

자료구조

목록 보기
1/12
post-thumbnail

자료 구조란

자료 구조란 데이터 요소에 더 효율적으로 접근하고 수정할 수 있도록 해주는 것이다.

Abstraction

abstraction(추상화)란 Too abstract와 Too concrete의 중간 지점이다.

  • 복잡한 시스템을 가진 모델은 사용자의 관점에서 필수적인 디테일만을 포함한다.
  • 프로그램은 무엇을 하는지는 말하지만 어떻게 하는지를 말하진 않는다. -> 프로그램은 추상적이다.

information Hiding

필요한 부분만 보여주고 나머지는 숨기는 것

Data

data는 정보를 표현하는 방식으로 사람이나 기계에게 더 분석이 용이하고 더 상호작용이 잘 되도록한다.

ADT

Abstract Data Type의 약자로 Data와 Operation을 합친 개념이다.

operations

  • Constructor: 생성자
  • Transformer: 변경자
  • Observer: 관찰자

Composite Data Type

  • Arrays: Structured -> 동종의 아이템들
  • Class: Unstructured -> 동종이 아닌 아이템들
  • Struct: Unstructured -> 동종이 아닌 아이템들

메모리 할당

프로그램을 실행하면 Storage에서 Memory로 load한 후 CPU에서 연산을 한다.

다음은 각 type별로 메모리에 할당되는 크기이다.

int int_val; // sizeof(int) is 4 bytes
float float_val; // sizeof(float) is 4 bytes
short short_val; // sizeof(short) is 2 bytes
char char_val; // sizeof(char) is 1 bytes

1차원 배열
1차원 배열은 유한한 고정된 크기의 동종의 아이템들로 이루어진 데이터 타입이다.

1차원 배열의 주소를 구하는 식
Address[index] = BaseAddress + Index*SizeOfElement

int values[5];

위처럼 정의된 배열이 있다고 하자.
배열의 첫 번째 주소는 7000일 때 values[3]의 주소를 구해보자.

values[3]의 주소 = 7000 + 3*4 = 7012

2차원 배열
2차원 배열의 경우엔 선형 구조로 행을 이어붙여 구성된다.

2차원 배열의 주소를 구하는 식
Address[row][col] = BaseAddress + row X [column] X SizeOfElement + col X SizeOfElement

int intArray[5][12];

위처럼 배열이 정의 되었을 때 intArray[3][7]의 주소는? (BaseAddress = 2000)
2000 + 3 X 12 X 4 + 7 X 4 = 2172

profile
게임 개발을 좋아하는 개발자입니다.

0개의 댓글