1-1. 배열 전달과 포인터
문제설명
배열을 함수의 인자로 전달할 때 실제로 어떤 형태로 전달되는지 확인하는 문제입니다.
목표
- 배열명이 함수 호출 시 포인터처럼 전달된다는 점을 이해한다.
- 배열 매개변수가 실제로는 포인터라는 점을 이해한다.
요구사항
아래 코드의 빈칸을 완성하시오.
#include <stdio.h>
void print_array( __________ )
{
for(int i = 0; i < size; i++)
printf("%d ", arr[i]);
}
int main(void)
{
int nums[3] = {10, 20, 30};
print_array(nums, 3);
return 0;
}
예상 출력
10 20 30
예상 코드
1-2. Call-by-value
문제설명
값 전달(Call-by-value)의 특징을 이해하는 문제입니다.
목표
- 함수 호출 시 값이 복사된다는 점을 이해한다.
- 함수 내부 수정이 원본 변수에 영향을 주지 않는다는 점을 이해한다.
요구사항
아래 코드의 실행 결과를 예상하고 왜 그런 결과가 나왔는지를 설명하시오.
#include <stdio.h>
void change(int num)
{
num = 100;
}
int main(void)
{
int value = 10;
change(value);
printf("%d\n", value);
return 0;
}
예상 답안
1-3. Call-by-reference
문제설명
포인터를 이용하여 함수 밖 변수의 값을 수정한다.
목표
- 주소 전달의 의미를 이해한다.
- 포인터를 통해 원본 데이터를 수정할 수 있음을 이해한다.
요구사항
빈칸을 완성하여 value 값이 100으로 변경되도록 작성하시오.
#include <stdio.h>
void change( __________ )
{
*num = 100;
}
int main(void)
{
int value = 10;
change( __________ );
printf("%d\n", value);
return 0;
}
예상 출력
100
예상코드
1-4. const 포인터
문제설명
포인터와 const의 의미를 구분하는 문제입니다.
목표
- const 위치에 따라 의미가 달라짐을 이해한다.
- “값 변경 금지”와 “주소 변경 금지”를 구분한다.
요구사항
다음 코드 중 컴파일 오류가 발생하는 줄을 고르고 각 오류의 이유를 설명하시오.
int num1 = 10;
int num2 = 20;
const int *ptr1 = &num1;
int * const ptr2 = &num1;
① *ptr1 = 30;
② ptr1 = &num2;
③ *ptr2 = 40;
④ ptr2 = &num2;
예상 답안
'[1] 프로그래밍1 및 실습(C언어) > 11주차. 포인터와 함수' 카테고리의 다른 글
| [11주차][포인터와 함수] 2단계 연습문제 - 키오스크 코드 수정하기 (0) | 2026.05.10 |
|---|