윤성우 열혈강의 독파 중인 휴학생입니다. 도전 문제를 풀긴 했는데 포인터를 이용해서 다시 풀려고 하니 계속 오류가 뜨는데 이유를 잘 모르겠네요.


문제는 이겁니다.

<길이가 10인 배열을 선언하고 총 10개의 정수를 입력받는다. 단, 입력 받은 숫자가 홀수이면 배열의 앞에서부터 채워나가고, 짝수이면 뒤에서부터 채워나가는 형식을 취하기로 하자. 따라서 사용자가 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]을 입력했다면, 배열에는 [1, 3, 5, 7, 9, 10, 8 ,6 ,4 ,2]의 순으로 저장이 되어야 한다.>


먼저 제가 코딩한건 이건데

#include <stdio.h>


int main(void)
{
     int arr[10];
     int i, num;
     int odd=0, even=9;


     printf("총 10개의 숫자 입력 \n");
     for(i=0; i<10; i++)

     {

printf("입력: ");

scanf("%d", &num);
  
if(num%2==0)
{
        arr[even]=num;
        even--;
}
else
{
        arr[odd]=num;
        odd++;

}

}
 
for(i=0; i<10; i++)
      printf("%d ", arr[i]);
printf("\n");
 
return 0;

}


위에서 만든 main함수에 포인터를 적용해서 if 구문을 함수형태로 따로 빼보았습니다.

#include <stdio.h>


void Sort(int ary[], int * odptr, int * eveptr, int n)
{
     if(n%2==0)
     {
          ary[*eveptr]=n;
          (*eveptr)--;
     }
     else
     {
          ary[*odptr]=n;
          (*odptr)++;
     }
}


int main(void)
{
     int arr[10];
     int i, num;
     int odd=0, even=9;


     printf("총 10개의 숫자 입력 \n");
     for(i=0; i<10; i++)
     {
          printf("입력: ");
          scanf("%d", &num);
          Sort(arr, &odd, &even, num);
     }
 
     for(i=0; i<10; i++)
     printf("%d ", arr[i]);
     printf("\n");
 
     return 0;
}

위와 같이 Sort 함수를 정의해봤는데 컴파일 오류가 수두룩 .... ㅠ 제가 아직 포인터를 잘 이해를 못한건지 왜 틀린건지 잘 모르겠습니다.

원인 좀 알려주시면 감사하겠습니다.