인프런 커뮤니티 질문&답변

TaeChoon Pakr님의 프로필 이미지
TaeChoon Pakr

작성한 질문수

홍정모의 따라하며 배우는 C언어

14.25 qsort 함수 포인터 연습문제

Compare함수는 왜 void*를 argument로 받나요?

작성

·

302

0

앞강의에서 포인터(주소)의 자료형을 변환하는것은 매우 위험하니 결코 권장하지 않는다 하셨습니다.그런데 왜 여기서는 굳이 void*로 받고  float*(int*) 로 형변환해서 쓰나요? 그냥 처음 받을때부터 float*(int*) 로 받으면 안돼는건가요?

답변 1

3

library에 구현된 qsort의 parameter가
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
이러합니다. int 형 자료를 반환하고, void 포인터 두 개를 parameter로 받아오는 함수 포인터입니다. 

이렇게 구현하면 비교하는 함수만 바꾸면 되고, qsort를 여러개 만들어둘 필요가 없다는 이점이 있습니다.
https://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm
참고자료입니다.

TaeChoon Pakr님의 프로필 이미지
TaeChoon Pakr

작성한 질문수

질문하기