Embedded Programming/C/C++

배열을 함수에 전달하기 (배열을 인수로 전달하기)

중동콜링 2013. 4. 2. 17:49


#include <stdio.h>
#define MAX 5

int largest(int arr[], int last);

int main()
{
  int array[MAX] = {12345};
  int biggest;

  biggest = largest(array, MAX);
  printf("최대값은 %d\n", biggest);

  return 0;
}

int largest(int arr[], int last)
{
  int i;
  int biggest = -10000;
  for (i = 0; i < last; i++)
  {
    if (arr[i] > biggest)
      biggest = arr[i];
  }
  return biggest;
}

배열을 함수에 전달하는 방법은 포인터 밖에 없다. 

위 함수의 원형을 보면,

int largest(int arr[], int last);

로 배열 자체를 전달하는 것으로 보일수도 있으나, 

biggest = largest(array, MAX);


위 함수를 호출하는 부분을 보면 배열의 시작주소인 배열 이름을

인수로 전달함으로써, 배열의 시작주소 자체를 보낸다는 것을 알 수 있다.


그리고 largest()함수 내부에서 array의 크기를 출력해봐도 포인터의 크기인

4 byte가 나온다는 것을 확인 할 수 있다.

<수정한 소스>



그러므로 largest()함수의 원형을 

int largest(int *arr, int last);

와 같이 바꿔도 사용에는 아무 이상이 없으나, 

해당 인수가 배열이라는 것을 표시하기 위해서 

int largest(int arr[], int last);

의 형태로 사용한다.