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
✔️ 문제에서 주어진 조건을 빠뜨리지 않고 잘 적용
반응형
'기출문제 > 정보처리기사' 카테고리의 다른 글
2022년 2회 정보처리기사 기출문제 81번 (0) | 2025.03.02 |
---|---|
2022년 2회 정보처리기사 기출문제 80번 (0) | 2025.03.02 |
2022년 2회 정보처리기사 기출문제 78번 (0) | 2025.03.02 |
2022년 2회 정보처리기사 기출문제 77번 (0) | 2025.03.02 |
2022년 2회 정보처리기사 기출문제 76번 (0) | 2025.02.26 |