-
03. 배열, 구조체, 포인터Computer Science/Data Structure 2021. 4. 5. 02:21
3.1 배열
개념
- 동일한 타입의 데이터를 한 번에 여러개 만들 때 사용하는 자료형
- 인덱스(index) 번호를 사용하여 여러개 만들 때 사용하는 자료형
특징
- 연속적인 메모리 할당이 가능하다.
- index 번호를 이용하여 쉽게 접근 할 수 있다.
1차원 배열 선언
- 자료형 배열이름[배열 요소의 개수];
int list[3];
- 초기화 방법
int list[3] = { 1, 2, 3 };
2차원 배열 선언
- 자료형 배열이름[행 요소의 개수][열 요소의 개수];
int list[3][5];
좌표라고 생각하면 이해하기 편하다. 예를 들면 list[0][0] > (0, 0) , list[2][3] > (2, 3)
3.2 구조체(Struct)
개념
- 타입이 다른 데이터를 묶는 방법
- 배열과의 차이점
: 배열은 타입이 같은 데이터의 모임 이며, 구조체는 타입이 다른 데이터를 묶는 방법이다.
구조체의 형식
struct 구조체이름 { 항목1; 항목2; ... };
- 구조체의 형식이 정의 되었다면, 구조체 변수를 생성해주어야 한다.
struct 구조체이름 구조체변수;
- typedef을 사용하여 구조체를 새로운 타입으로 선언할 수도 있다.
typedef studentTag { char name[10]; int age; double gpa; } student;
- 참고
: struct와 typedef의 차이점 - 초기화 방법
student s = { "shin", 20, 4.3 };
구조체 변수 선언 방법 과 예
- 구조체형 선언 후, 변수 선언
2. 구조체형과 구조체 변수를 연결하여 선언
3. 구조체형 이름을 생략하고 구조체 변수 이름만 선언
3.3 포인터(Pointer)
개념
- 다른 변수의 주소를 가지고 있는 변수이다. 모든 변수에는 메모리 공간에 저장되고, 메모리의 각 바이트엔 주소가 매겨져 있다.
- 변수를 선언하게 되면 메모리의 특정 위치에 저장되는데, 그 위치를 나타내는 메모리 주소를 포인터라고 한다.
- 예를 들어, " 편지봉투에 받는 사람 주소를 쓰면, 그 주소로 편지가 전달되어 집주인이 편지를 받게 된다. " 라는 문장에서 봤을 때,
편지봉투에 받는 사람 주소가 적혀있으므로 포인터라고 볼 수 있고,
받는 사람 주소는 메모리 주소이며,
주소에 해당하는 집주인이 편지를 받는 행위는 포인터를 통한 액세스 처리 라고 생각 하면 된다.
포인터와 관련된 연산자
- & 연산자: 변수의 주소를 추출
- * 연산자: 포인터가 가리키는 곳의 내용을 추출
int a; // 정수형 변수 p = &a; // 변수의 주소를 포인터에 저장
*p = 200;
이렇게 된다면,
그림에서 설명한 것과 같은 이유로 값만 같은 것이 아니라, 동일한 실제적인 객체를 가리키기 때문에 a의 값도 200이 된다.
'Computer Science > Data Structure' 카테고리의 다른 글
04. 스택의 응용 - 괄호 검사 문제 알고리즘 (0) 2021.04.10 04. 스택 (0) 2021.04.10 02. 순환 (0) 2021.03.24 01. 자료구조와 알고리즘 (0) 2021.03.21