본문 바로가기
프로그래밍

Function Pointer EX

by 건우아빠유리남편 2009. 7. 19.
반응형


#include <stdio.h>

// 함수포인터 예제

// 컴파일해서 라이브러리로 보관(즉 이진 기계어 코드 형식으로)
typedef int(*Compare)(int, int);

// 결국 qsort()의 원리가 이처럼 함수를 인자로 받아서 sort 한다.

// 알고리즘은 : sort 함수가

// sort 기준은 : 사용자가
void sort(int* x, int sz, Compare cmp)
{
 int i, j, temp;

 for(i=0; i<sz; ++i)
 {
  for(j=i+1; j <sz; ++j)
  { 
   if( cmp( x[i], x[j]) > 0) //외부에서 전달된 함수 다시 호출해서 비교
   {
    temp = x[i];
    x[i] = x[j];
    x[j] = temp;
   }
  }
 }
}
#include <stdlib.h> // for abs()
//-----------------------------------------------
int cmp1(int a, int b)
{
 return abs(b)-abs(a);
 //return abs(a) - abs(b) ;
}
void main()
{
 int i = 0;
 int y[10] = { 1,3,-6,7,9,10,-2,4,5,8 }; //아무 숫자나 10개 넣으세요

 sort(y, 10, cmp1); // 어떻게 sort할 것인가를 정하기 위해
        // 두 원소를 비교하는 함수를 한개 제공한다.

 for(i=0;i<10; ++i)
 {
  printf("%d ", y[i]);
 }
}

반응형

'프로그래밍' 카테고리의 다른 글

typedef에 관하여  (0) 2009.07.19
Quick Sort  (0) 2009.07.19
함수 및 포인터  (0) 2009.07.19
Flexible Array  (0) 2009.07.19
Error Handling  (0) 2009.07.19

댓글