는 C 기준에 따르면 표준 라이브러리에서 제공를 qsort 함수의 형식은왜 qsort의 비교기가 이와 같은 방식이어야합니까?
void
qsort (void * base, size_t num, size_t size, int (* compar) (const void *, const void *));
비교 예 기능은 형태 const void *
에 인수를 가지고 있어야하고 const void *
또 다른 질문은 함수가 const void *
형식의 인수를 취하는 경우이 포인터가 가리키는 값을 변경할 수 있습니까?
예 :
static int double_a_number(const void * val){
*(int *)val = *(int *)val * 2;
return 0;
}
이 정말 변수에 발을 두 배로 할 것인가?
도움 주셔서 감사합니다.
두 번째 질문에 대해서는 입력하고 알아낼 수 없습니까? – Pointy
두 번째 질문은 : yes, 'int'객체의 주소와 함께 제공됨. – pmg
@Pointy 정의되지 않은 동작 때문에 대부분의 경우 작동 할 수 있습니다. 어떤 경우에는 단지 "이 경우"가 아니라 항상 작동 하는지를 아는 것이 더 좋습니다. – RedX