본문 바로가기

대학교 2학년 1학기/자료구조

3. 배열, 구조체, 포인터

728x90

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() 함수는 할당된 메모리 블록을 운영체제에게 반환

728x90

'대학교 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