다음 코드에서 빈칸에 들어갈 올바른 값은 무엇인가요?
다음 코드에서 빈칸에 들어갈 올바른 값은 무엇인가요?
char letters[8] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
int arraySize = sizeof(letters) / sizeof(_______);
cout << arraySize; // 출력: 8
정답: C
배열 원소 개수를 구할 때는
sizeof(배열명) / sizeof(첫번째원소)
를 사용합니다.각 선택지 분석:
1번 (
char
) - 작동하지만 권장하지 않음:⦁
sizeof(char)
는 항상 1바이트이므로 결과는 맞습니다.⦁ 하지만 데이터 타입을 하드코딩하는 것은 좋지 않습니다.
⦁ 나중에 배열 타입이 바뀌면 이 부분도 수정해야 합니다.
2번 (
letters
) - 잘못된 사용:⦁
sizeof(letters)
는 전체 배열 크기(8바이트)를 반환합니다.⦁
8 ÷ 8 = 1
이 되어 잘못된 결과가 나옵니다.3번 (
letters[0]
) - 올바른 방법:⦁
letters[0]
은 배열의 첫 번째 원소를 의미합니다.⦁
sizeof(letters[0])
는 char
하나의 크기(1바이트)를 반환합니다.⦁
8바이트 ÷ 1바이트 = 8개
(정확한 원소 개수)4번 (
8
) - 하드코딩:⦁ 숫자를 직접 사용하는 것은 바람직하지 않습니다.
권장하는 이유:
⦁ 타입에 독립적입니다.
⦁ 배열 타입이 변경되어도 자동으로 올바른 결과를 제공합니다.
⦁ 컴파일 시점에 계산되므로 성능에 영향이 없습니다.
💡 학습 팁
이 문제를 포함한 C++ 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.