1. 배열: 타입이 같은 데이터를 하나로 묶는 방법
- 사용 시 연속적인 메모리 공간이 할당.
2. 구조체: 타입이 다른 데이터를 묶는 방법
- c언어에서는 struct 키워드를 이용하여 표기.
- struct 키워드와 구조체 태그로 구조체 생성 ex) struct tag s;
- 구조체 안에 있는 멤버를 사용하려면 구조체 변수 뒤에 ‘.’(멤버 연산자)를 첨가하여 항목 이름을 적음.
- c언어에서는 typedef를 이용하여 구조체를 새로운 타입으로 정의할 수 있음.
3. 포인터: 다른 변수의 주소를 가지고 있는 변수
- & 연산자: 변수의 주소를 추출하는 연산자
- * 연산자: 포인터가 가리키는 장소에 값을 저장하는 연산자
- 포인터를 통해 구조체의 멤버에 접근하는 표기법은 “->”
- 배열의 이름 = 배열의 시작 위치를 가리키는 포인터
&A[0] == A
&A[i] == &A[0] + i == A+i
A[i] == *(A+i)
4. 동적 메모리 할당: 필요한 만큼의 메모리를 운영체제로부터 할당받아서 사용하고, 사용이 끝나면 시스템에 메모리를 반납하는 기능.
- 동적 메모리가 할당되는 공간은 히프이며, 운영체제가 사용되지 않는 메모리 공간을 모아 놓는 곳.
- malloc()은 동적 메모리 블록의 시작 주소를 반환, 반환되는 주소의 타입은 void *이므로 이를 적절한 포인터로 형 변환해야 하며 불가능하면 NULL을 함수의 반환 값으로 반환.
- 동적 메모리는 포인터로만 사용할 수 있음.
- free() 함수는 할당된 메모리 블록을 운영체제에게 반환
'대학교 2학년 1학기 > 자료구조' 카테고리의 다른 글
6-1. 연결리스트 (배열을 이용한 구현) (0) | 2022.05.03 |
---|---|
5. 큐 (0) | 2022.04.12 |
4. 스택 (0) | 2022.04.11 |
2. 순환 (0) | 2022.04.11 |
1. 자료구조와 알고리즘 (0) | 2022.04.11 |