Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1495] 초보의 질문입니다.
또치 [] 1350 읽음    2002-11-06 19:52
안녕하세요. 21일만에 끝낸다는 어떤 책을 거의 5개월 간 보고 있는 초보예요.
이제 거의 끝부분인데요, 궁금한 게 하나 있네요. 먼저 다음 코드를 좀 봐주시겠어요.

/*................................ */

01 #include <stdio.h>
02 #include <stdlib.h>

03 #define MAX 20

04 int intcmp(const void *v1, const void *v2);

05  main()
   {
       int arr[MAX], count, key, *ptr;

        printf("Enter %d integer values; press Enter after each. \n", MAX);

        for(count=0;count<MAX;count++)
            scanf("%d", &arr[count]);

         puts("press Enter to sort the values.");
         getc(stdin);

         /*sorting */

14         qsort(arr, MAX, sizeof(arr[0]), intcmp);

         /* printing */

         for(count=0;count<MAX;count++)
             printf("\n arr[%d]=%d.", count, arr[count]);

          puts("\n Press Enter to continue.");
          getc(stdin);

          /*input searching key */

          printf("Enter a value to search for : ");
          scanf("%d", &key);

          /* executing */

          ptr=(int *)bsearch(&key,arr, MAX, sizeof(arr[0]), intcmp);

          if(ptr !=NULL)
             printf("%d found at arr[%d].", key, (ptr-arr));
          else
             printf("%d not found.", key);
       
           return(0);
}

31 int intcmp(const void *v1, const void *v2)
32 {

33          return(*(int *)v1 - *(int *)v2);

34 }

/* ---------------------------------------------- */

질문은 두 가지인데요, 첫번째는 14줄에 있는 qsort()에서 intcmp에 관한 겁니다. 제가 알기로는
이게 비교함수에 대한 포인터인데요, 이게 마지막에 있는 함수를 가르키기 위해서는
어떤 작업이 필요한 게 아닌가요? 보통 포인터를 선언하고 이 포인터가 무엇을 가르키게
초기화하잖아요? 그런데 14줄의 intcmp는 그런 게 없어요. 그런데도 자동으로 31번째 줄에
정의되어 있는 함수를 찾을 수 있는 건가요, 단지 이름이 같다는 이유로?

두번째는 31번째 함수 정의 부분에서 *v1과 *v2에 관한 것입니다. 궁금한 건 14번째 줄에서 어떤
인수도 전달하지 않았는데 이 두 값이 무슨 소용이 있고 함수 intcmp()는 무슨 작업을 할 수
있겠는가, 하는 것입니다. 그냥 이런 식으로 작성하면 알아서 하는 건가요?

우스운 질문이 될 수도 있겠지만 답변 좀 부탁드립니다. 전 몹시 궁금하거든요. ^^*

감사합니다.



                   

+ -

관련 글 리스트
1495 초보의 질문입니다. 또치 1350 2002/11/06
1498     Re:초보의 질문입니다. 오전&오후 1327 2002/11/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.