데이터가 많아질수록 같은 종류의 값을 하나의 구조로 다루는 방법이 필요하다.
배열은 같은 종류의 여러 값을 하나의 이름 아래 순서대로 모아 두는 방법이다. 각 값은 인덱스로 구별되기 때문에 score1, score2, score3처럼 변수 이름을 계속 늘리지 않아도 된다.
중요한 것은 배열이 ‘값 여러 개’라는 점보다 ‘인덱스로 접근하는 연속된 데이터’라는 점이다. 배열 문제가 나오면 먼저 길이와 시작 인덱스를 확인하고, 실제로 접근하는 위치가 범위를 벗어나지 않는지 살펴본다.
같은 종류의 값을 줄 세운다
score라는 이름으로 다섯 개의 정수를 연속된 구조에 저장했다.
배열은 인덱스를 이용해 원하는 위치의 값을 꺼낼 수 있다.
배열과 반복문은 자주 함께 등장한다
같은 작업을 배열의 모든 원소에 적용할 때 반복문을 사용하면 자연스럽다.
i = 1 → score[1]
...
i = 4 → score[4]
배열과 반복문이 함께 등장하는 이유는 분명하다. 배열은 여러 값을 순서대로 저장하고, 반복문은 그 여러 위치를 차례로 방문한다. 인덱스의 변화가 곧 ‘지금 어느 원소를 읽고 있는가’를 결정한다.
시험에서는 반복 횟수보다 인덱스 범위를 먼저 적는 편이 좋다. 시작값, 종료 조건, 증가식을 확인한 뒤 score[i]가 실제로 어떤 칸을 가리키는지 한 줄씩 따라가면 실수를 줄일 수 있다.
문자열도 결국 문자들의 연속이다
C에서는 문자열도 문자 배열의 형태로 다룬다.
실제 메모리에는 문자열의 끝을 나타내는 특별한 종료 문자까지 함께 저장된다.
ILLUST C | DROP-01 | 문자 배열과 문자열 종료 문자 | 코드만으로 충분C 문자열에서 마지막 종료 문자는 화면에 보이지 않지만 문자열의 끝을 알려 주는 중요한 표시다. 따라서 문자 개수와 실제 배열에 필요한 공간이 항상 같다고 생각하면 틀릴 수 있다.
문자열 함수가 어디까지 읽어야 하는지 판단할 수 있는 것도 이런 끝 표시가 있기 때문이다. 문자열 문제에서는 글자 자체뿐 아니라 배열 크기와 마지막 위치를 함께 확인하는 습관이 중요하다.
문자열을 배열로 생각하면 인덱스를 이용해 각 문자를 읽거나 바꿀 수 있다는 점도 자연스럽게 이해된다. 다만 문자열의 끝과 배열의 실제 크기를 함께 관리해야 하므로 숫자 배열보다 경계 조건을 더 조심해야 한다.