이번 편의 목표: 가격 여러 개를 배열에 두고, 함수에는 시작 주소와 개수를 함께 넘깁니다.
배열은 같은 자료형의 값을 메모리에 나란히 둡니다. 첫 원소의 번호는 0입니다. 원소가 3개면 유효한 번호는 0, 1, 2입니다. 그 밖을 읽거나 쓰면 동작이 정의되지 않습니다.
#include <stdio.h>
int total_price(const int *prices, int count) {
int sum = 0;
for (int i = 0; i < count; i++) {
sum += prices[i];
}
return sum;
}
int main(void) {
int prices[3] = {12000, 1800, 9000};
printf("%d\n", prices[0]);
printf("%d\n", total_price(prices, 3));
return 0;
}prices[0]은 12000입니다. 세 가격의 합은 22800입니다. 배열 이름은 함수로 넘기면 첫 원소의 주소가 됩니다. 함수 안에서는 원소 개수를 sizeof로 되돌릴 수 없으므로 count를 따로 넘깁니다.
main 안에서는 sizeof(prices) / sizeof(prices[0])가 3입니다. 이 계산은 배열 선언이 보이는 함수에서만 맞습니다. const int *는 함수가 가격을 읽기만 한다는 표시입니다.
직접 해 보기
가격을 하나 더 넣어 원소를 4개로 만들고, total_price에 넘기는 개수도 4로 맞추세요.
해설
개수를 3으로 남기면 네 번째 가격은 합에 들어가지 않습니다. 배열 길이와 함수에 넘기는 count는 같은 값이어야 합니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.