요약: 포인터를 이용한 배열 순회
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 11번째.
챌린지
쉬움포인터 산술 연산과 배열-포인터 동등성을 사용하여 정수 배열의 모든 요소의 합을 계산하는 함수를 구현하는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 두 개의 매개변수를 받는
calculateSum이라는 이름의 함수를 만듭니다:- 배열을 나타내는 정수 포인터 (
int *arr) - 배열의 요소 개수를 나타내는 정수 (
size)
- 배열을 나타내는 정수 포인터 (
calculateSum함수 내부에서:- 변수
sum을 0으로 초기화합니다 - 포인터 변수
ptr을 생성하고 배열의 시작 부분을 가리키도록 설정합니다 - 포인터 산술 연산을 사용하여 배열을 순회하는 루프를 사용합니다
- 각 반복에서
ptr이 가리키는 값을sum에 더합니다 - 포인터를 증가시켜 다음 요소로 이동합니다
- 계산된 합계를 반환합니다
- 변수
main함수에서:- 배열의 크기를 나타내는 정수
n을 읽습니다 - 크기가
n인 정수 배열을 선언합니다 - 입력으로부터
n개의 정수를 읽어 배열을 채웁니다 - 배열과 그 크기를 사용하여
calculateSum함수를 호출합니다 - 결과를 "Sum: [value]" 형식으로 출력합니다
- 배열의 크기를 나타내는 정수
함수는 배열 순회를 위해 포인터 산술 연산을 사용해야 합니다. arr[i]와 같은 배열 인덱싱 표기법을 사용하지 마세요. 대신 포인터 역참조 및 증가 연산을 사용하여 배열 요소에 접근하세요.
예를 들어, 입력이 다음과 같다면:
5
10 20 30 40 50출력은 다음과 같아야 합니다:
Sum: 150이 챌린지는 함수가 배열을 포인터 매개변수로 받는 방법, 포인터 산술 연산을 사용하여 배열을 효율적으로 순회하는 방법, 그리고 배열 이름이 함수로 전달될 때 어떻게 자동으로 포인터로 변환되는지에 대한 이해를 테스트합니다.
직접 해보기
#include <stdio.h>
// TODO: 여기에 calculateSum 함수를 작성하세요
int main() {
int n;
scanf("%d", &n);
int arr[n];
// 배열 요소를 읽습니다
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: calculateSum 함수를 호출하고 결과를 저장하세요
// TODO: "Sum: [value]" 형식으로 결과를 출력하세요
return 0;
}