이전 포스트에 Pointer에 대해서 다루었습니다.
이번에는 Pointer 와 Array의 관계에 대해서 다루고자 합니다.
포인터와 배열은 매우 긴밀한 관계를 가지고 있습니다.
int arrayName[10];
// 10개의 공간을 가진 arrayName이라는 이름을 가진 배열을 선언합니다.
arrayName 이라는 배열은 10개의 정수 (40바이트) 를 수용할 수 있는 메모리가 할당 됩니다.
여기서 배열의 이름( arrayName )은 배열의 시작 주소를 저장하는 포인터 변수가 됩니다.
단, 그 값을 변경할 수 없습니다.
#include <stdio.h>
int main(void) {
int sum, i, average;
int num[10];
for (int i = 0; i < 10; ++i)
scanf("%d", &num[i]);
sum = calculate_sum(num);
average = sum / 10;
printf("%d\n", average);
return 0;
}
int calculate_sum(int *array) {
int sum, i;
sum = 0;
for (int i = 0; i < 10; ++i) {
sum = sum + array[i];
}
return sum;
}
위와 같은 예제 코드가 있습니다.
순서대로 설명해보겠습니다.
여기서
sum = calculate_sum(num)
인자로 받는 num 은 배열 num의 주소값입니다.
즉 주소값을 인자로 넘겨줍니다.
그렇다면 calculate_sum 함수는 주소값을 받아서 함수를 실행하게 됩니다.정리하자면, 배열을 매개변수로 받을 때 int array[ ] 대신
Pointer로 받을 수도 있습니다.