36.5 반복문으로 배열의 요소를 모두 출력하기
이번에는 반복문을 사용하여 배열의 요소를 모두 출력해보겠습니다.
array_for.c
#include <stdio.h> int main() { int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 크기가 10인 int형 배열 for (int i = 0; i < sizeof(numArr) / sizeof(int); i++) // 배열의 요소 개수만큼 반복 { printf("%d\n", numArr[i]); // 배열의 인덱스에 반복문의 변수 i를 지정 } return 0; }
실행 결과
11 22 33 44 55 66 77 88 99 110
반복문에서 for (int i = 0; i < sizeof(numArr) / sizeof(int); i++)처럼 조건식에 sizeof 연산자를 사용하여 배열의 요소 개수를 구한 뒤 반복하였습니다.
for (int i = 0; i < sizeof(numArr) / sizeof(int); i++) // 배열의 요소 개수만큼 반복
반복문의 변수 i는 변화식을 통해 1씩 증가하므로 배열의 인덱스에 i를 넣으면 배열의 요소를 순서대로 모두 접근할 수 있습니다.
for (int i = 0; i < sizeof(numArr) / sizeof(int); i++) // 배열의 요소 개수만큼 반복 { printf("%d\n", numArr[i]); // 배열의 인덱스에 반복문의 변수 i를 지정 }
반복문으로 배열의 요소를 역순으로 출력할 수도 있겠죠?
array_for_reverse.c
#include <stdio.h> int main() { int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 크기가 10인 int형 배열 for (int i = sizeof(numArr) / sizeof(int) - 1; i >= 0; i--) // 요소 개수 - 1부터 역순으로 반복 { printf("%d\n", numArr[i]); // 배열의 인덱스에 반복문의 변수 i를 지정 } return 0; }
실행 결과
110 99 88 77 66 55 44 33 22 11
반복문으로 배열의 요소를 역순으로 출력할 때 주의할 점이 있습니다. 초깃값에 배열의 크기(요소 개수)를 바로 넣어버리면 처음부터 배열의 인덱스를 벗어난 상태가 됩니다.
int numArr[10]; // 요소가 10개 numArr[10]; // 10을 지정하면 배열의 인덱스를 벗어난 상태가 됨 numArr[9]; // 마지막 요소의 인덱스는 요소의 개수 - 1
배열의 인덱스는 0부터 시작하므로 마지막 요소의 인덱스는 요소의 개수에서 1을 빼줘야 합니다. 즉, 요소가 10개인 배열에서 마지막 요소의 인덱스는 9가 되겠죠? 따라서 다음과 같이 초기식에는 배열의 요소 개수를 구한 뒤 1을 빼주고, 조건식에는 "0보다 크거나 같을 때까지"를 지정하여 0까지 반복할 수 있도록 만듭니다.
for (int i = sizeof(numArr) / sizeof(int) - 1; i >= 0; i--) // 요소 개수 - 1부터 역순으로 반복