728x90
배열(Array)
- 같은 자료형의 데이터를 여러개 만들 때 사용
- 배열을 이용하면 연속적인 메모리 공간에 데이터들을 저장할 수 있음
- 각 데이터에는 인덱스를 이용하여 접근
ADT
Array
객체 : <index, value> 쌍의 집합
연산 :
- create(n) : n개의 요소를 저장할 수 있는 배열
- get(A, i) : 배열 A의 i번째 요소 반환
- set(A, i, v) : 배열 A의 i번째 위치에 v 저장
구조체(Structure)
- 배열 : 같은 타입의 데이터 모임
- 구조체 : 다른 타입의 데이터 묶음
- struct를 이용하여 형성
예제
형식
struct 구조체이름 {
int a;
float b[10];
char name[20];
};
구조체 변수 생성
struct 구조체이름 구조체변수;
구조체 타입 선언
typedef struct {
char name[10];
int age;
float gpa;
} student;
중괄호를 이용하여 초기화
student A = {"Jeongyong", 20, 4.15};
포인터(Pointer)
- 다른 변수의 주소를 가지고 있는 변수
- 모든 변수는 메모리 공간에 저장되고, 각 바이트에는 주소가 지정되어 있음 -> 이 주소가 포인터에 저장
- 포인터 변수는 화살표로 표현 : '->'
- 컴퓨터 메모리는 바이트로 구성되고, 각 바이트는 순차적으로 주소를 가짐
포인터 관련 연산자
& : 변수의 주소를 추출하는 연산자, 주소 연산자
* : 포인터가 가리키는 공간에 값을 저장하는 연산자, 간접참조 연산자(역참조 연산자)
++
배열의 이름은 배열의 시작위치를 가리키는 포인터이다.
컴파일러는 배열의 이름이 있는 공간을 배열의 첫번째 요소의 주소로 대치한다.
배열의 이름이 포인터이기 때문에 &연산자를 사용하지 않고 배열 이름을 바로 사용할 수 있는 것이다.
동적 메모리 할당(Dynamic Memory Allocation)
- 메모리 공간 낭비를 억제하기 위한 방법
- 필요한 만큼 메모리를 운영체제로부터 할당받아 사용 가능
- 사용 후 시스템에 메모리 반납이 가능
힙(Heap)
- 운영체제가 사용하지 않는 공간을 모아놓은 곳
- 동적 메모리 할당이 이뤄지는 곳
- 동적 메모리 할당에서 필요한 만큼 할당하고, 반납받기 때문에 메모리 효율성이 증가
예제
int *dma;
dma = (int *)malloc(sizeof(int)); //동적 메모리 공간 할당
*dma = 1995; //할당받은 공간 사용
free(dma); //동적 메모리 공간 반납
'컴퓨터공학 > 자료구조' 카테고리의 다른 글
자료구조 : 이진 인덱스 트리(BIT, Binary Indexed Tree) (0) | 2021.05.15 |
---|---|
자료구조 : 유니온-파인드(Union-Find) (0) | 2021.04.29 |
2. 순환 (0) | 2019.05.18 |
1. 자료구조와 알고리즘 (0) | 2019.05.16 |