기출문제/정보처리기사

2022년 2회 정보처리기사 기출문제 79번

엉클지니 2025. 3. 2. 19:38

79. a[0]의 주소값이 10일 경우 다음 C언어 프로그램이 실행되었을 때의 결과는? (, int 형의 크기는 4Byte로 가정한다.)

 

14, 10   14, 14

 18, 10    18, 14

 


이 문제는 배열의 메모리 주소 계산과 관련된 기초적인 C언어 메모리 구조 이해를 묻는 문제예요.


🔎 먼저, 주어진 코드 분석

#include <stdio.h>

int main(int argc, char *argv[]) {
    int a[] = {14, 22, 30, 38};  // int 배열 선언
    printf("%u, ", &a[2]);       // a[2]의 주소 출력
    printf("%u", a);              // 배열 a의 시작 주소 출력
    return 0;
}

📌 포인트 1: 배열과 주소 관계

배열의 메모리 배치

배열은 메모리에 연속적으로 저장됩니다. int형 배열일 경우, 각 원소는 4바이트씩 차지합니다.

  • a[0]: 시작 주소 (문제 조건에서 주소가 10이라고 줌)
  • a[1]: a[0] 다음 위치 (10 + 4 = 14)
  • a[2]: a[1] 다음 위치 (14 + 4 = 18)
  • a[3]: a[2] 다음 위치 (18 + 4 = 22)

요소 값 주소

a[0] 14 10
a[1] 22 14
a[2] 30 18
a[3] 38 22

📌 포인트 2: &a[2] 의미

  • &a[2]는 a 배열의 2번 인덱스 원소의 주소를 의미합니다.
  • 위에서 계산한 것처럼, a[2]의 주소는 18입니다.

그래서 첫 번째 출력은?

18

📌 포인트 3: a 의미

  • 배열의 이름인 a는 배열의 시작 주소를 의미합니다.
  • 즉, a는 a[0]의 주소와 같습니다.
  • 문제에서 a[0]의 주소를 10이라고 줬으니, a는 10입니다.

그래서 두 번째 출력은?

10

📊 최종 출력 결과

18, 10

✅ 정답: ③ 18, 10


📚 정리표: 배열과 주소 계산 공식

표현 의미 값

a 배열의 시작 주소 10
&a[0] a[0]의 주소 10
&a[1] a[1]의 주소 14
&a[2] a[2]의 주소 18

📌 핵심 요점

✔️ 배열 이름은 곧 배열의 시작 주소
✔️ 배열 원소는 타입 크기만큼 차례로 저장
✔️ int는 4바이트 → 다음 원소 주소 = 현재 주소 + 4
✔️ 문제에서 주어진 조건을 빠뜨리지 않고 잘 적용


 

반응형