내 문제 : 두 항목을 제네릭 형식의 배열로 바꿀 수있는 함수를 만들고 싶습니다.C - 제네릭 함수 : 두 개의 항목을 배열로 바꿔
void SwapInArrayG(void ** arr, int a, int b, size_t size)
{
void * temp = malloc(size);
memcpy(temp, *(arr + a), size);
memcpy(*(arr + a), *(arr + b), size);
memcpy(*(arr + b), temp, size);
}
I : 여기
void SwapG(void * a, void * b, size_t size)
{
void * temp = malloc(size);
memcpy(temp, a, size);
memcpy(a, b, size);
memcpy(b, temp, size);
}
는 모든 유형의 배열에 두 항목을 교환 할 기능의 내 시도 :
나는 어떤 유형의 두 항목을 교환 할 수 SwapG 기능이 나는 포인터를 엉망으로 만들었다 고 확신하지만 여전히 해결책을 찾을 수 없다. 나는 어떤 도움을 주셔서 감사합니다 :).
참고 : 복사가 완료되면'free (temp);를 사용하십시오. – chux
간단한 매크로를 사용할 때의 문제점은 무엇입니까? 귀하의 코드는 프로그래밍 오류에 대한 초대장이며 각 스왑에 대한 메모리 할당/해제가 매우 느립니다. – Olaf
동일한 배열의 두 항목을 바꾸려면 첫 번째 기능을 사용하지 않으시겠습니까? 'SwapG (array [idx1], array [idx2], sizeof (entry))' – EOF