다음 코드에서 컴파일 에러가 발생하지 않고 올바르게 실행되는 것은 무엇인가요?

과목: C++

문제 번호: 3434

hard
다음 코드에서 컴파일 에러가 발생하지 않고 올바르게 실행되는 것은 무엇인가요?
int numbers[3] = {5, 10, 15};
// 아래 중 올바른 코드는?
A. cout << numbers[3];
B. numbers[1] = 25; cout << numbers[1];
C. numbers = {20, 30, 40};
D. int size = numbers.length();

정답: B



각 선택지 분석:

1번 - 잘못된 코드:
numbers[3]은 범위를 벗어난 접근입니다.
⦁ 배열 크기가 3이므로 유효한 인덱스는 0, 1, 2뿐입니다.
⦁ 정의되지 않은 동작(undefined behavior)을 일으킵니다.

2번 - 올바른 코드:
numbers[1] = 25;는 두 번째 원소를 25로 변경하는 유효한 연산입니다.
cout << numbers[1];는 25를 출력합니다.

3번 - 잘못된 코드:
⦁ 배열 전체를 한번에 재할당하는 것은 불가능합니다.
⦁ 배열 이름은 상수 포인터이므로 다른 값으로 변경할 수 없습니다.

4번 - 잘못된 코드:
⦁ C++ 배열에는 .length() 메서드가 없습니다.
⦁ 배열 크기를 구하려면 sizeof(numbers)/sizeof(numbers[0])를 사용해야 합니다.

💡 학습 팁

이 문제를 포함한 C++ 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.