1-1. 배열 이름과 포인터
문제설명
배열 이름이 포인터처럼 동작하는 원리를 이해하는 문제이다.
목표
- 배열 이름이 첫 번째 요소의 주소임을 이해한다.
요구사항
- 코드의 실행 결과를 쓰시오.
- 왜 그런 결과가 나오는지 설명하시오.
코드
#include <stdio.h>
int main(void) {
int arr[3] = {10, 20, 30};
printf("%d\n", *arr);
printf("%d\n", *(arr + 2));
return 0;
}
예상답안
더보기
출력예시
10
30
- arr는 배열의 시작 주소이다.
- *arr는 첫 번째 값 → 10
- *(arr + 2)는 세 번째 값 → 30
1-2. 포인터 증가 연산
문제설명
포인터 증가 연산의 의미를 이해하는 문제이다.
목표
- 포인터가 자료형 크기만큼 이동함을 이해한다.
요구사항
- 실행 결과를 쓰시오.
- p++가 무엇을 의미하는지 설명하시오.
코드
#include <stdio.h>
int main(void) {
int arr[3] = {5, 10, 15};
int *p = arr;
printf("%d\n", *p);
p++;
printf("%d\n", *p);
return 0;
}
예상답안
더보기
출력예시
5
10
- 처음에는 arr[0] → 5
- p++ 후 arr[1] → 10
- int형 크기만큼 다음 주소로 이동한다.
3-3. 문자열 포인터
문제설명
문자열 리터럴과 문자열 포인터의 관계를 이해하는 문제이다.
목표
- 문자열 리터럴을 포인터가 가리킨다는 것을 이해한다.
요구사항
- 실행 결과를 쓰시오.
- 왜 배열처럼 접근 가능한지 설명하시오.
코드
#include <stdio.h>
int main(void) {
char *str = "Hello";
printf("%c\n", str[1]);
return 0;
}
예상답안
더보기
출력예시
e
- 문자열은 연속된 문자들의 주소를 가진다.
- str[1]은 두 번째 문자 → e
3-4. 포인터 배열
문제설명
포인터 배열의 구조를 이해하는 문제이다.
목표
- 배열의 각 요소가 포인터라는 것을 이해한다.
요구사항
- 실행 결과를 쓰시오.
코드
#include <stdio.h>
int main(void) {
char *arr[3] = {"Apple", "Banana", "Cherry"};
printf("%s\n", arr[1]);
return 0;
}
예상답안
더보기
출력예시
Banana
- arr[1]은 "Banana"를 가리키는 포인터이다.
'[1] 프로그래밍1 및 실습(C언어) > 9주차. 포인터와 배열' 카테고리의 다른 글
| [9주차][포인터와 배열] 2단계 연습문제 - 응용 (0) | 2026.04.25 |
|---|