1 minute read

‘c++로 쉽게 풀어쓴 자료구조 1판 - 천인국, 최영규’ 책을 참고하여 작성한 포스트입니다.

배열(array)

  • 배열은 하나의 변수에 여러 개의 값을 순차적으로 저장할 수 있는 자료 구조이다.
  • 가장 기본적인 특징은 <인덱스, 요소> 쌍의 집합이라는 것이다. 즉, 인덱스가 주어지면 해당하는 요소가 대응되는 자료구조이다.
  • C++의 배열에서는 모든 요소가 동일한 자료형이며, 인덱스를 사용하여 요소를 직접 접근(direct access)할 수 있다.
  • 대응되는 개념으로 연결 리스트가 있다. 순차 접근(sequential access) 방식으로 요소에 하나씩 순서적으로 찾아간다.

배열의 추상 자료형

데이터: <인덱스, 요소> 쌍의 집합
연산
 - craete(n): n개의 요소를 가진 배열을 생성
 - retrieve(i): 배열의 i번째 요소를 반환
 - store(i, item): 배열의 i번째 위치에 item을 저장 

1차원 배열

선언하는 방법은 다음과 같다

자료형 배열이름[배열의_크기];

배열에서 핵심은 요소들이 모두 메모리의 연속된 공간에 저장된다는 것이다

문자열

문자열은 1차원 배열의 한 종류로 char 형의 요소를 갖는 배열이다. 문자열의 끝에는 끝을 나타내는 NULL 문자 ‘\0’이 있어야 한다.

2차원 배열

1차원 배열이 여러 개 모여 이루어진다. 가로줄을 행(row), 세로줄을 열(column) 이라고 한다.

자료형 배열이름[행의_크기][열의_크기];

함수의 파라미터로서의 배열

배열의이름은 포인터의 역할을 한다!
따라서 함수 안에서 파라미터로 배열을 받아 배열의 내용을 수정하면 원래의 배열이 수정된다.
배열을 매개변수로 전달할 때 배열의 길이도 전달해주어야 한다.

2차원 배열을 매개변수로 보낼 때 a[][] 형태로 선언하고 싶다면, a[][5]처럼 반드시 가로 값을 지정해 주어야 한다.
가로 크기를 고정하면 활용성이 매우 떨어진다. 동적 할당과 이중 포인터를 사용하면 이를 해결할 수 있다.

Leave a comment