내가 스왑 기능과 같이이 이제사용하여 무효 포인터가
main()
{
int arr[8] = {4,7,9,2,6,7,8,1};
void *ptr = arr;
swap(0, 1, ptr);
int k;
for (k=0; k<8; k++)
printf("%d ", arr[k]);
}
, 스왑은 잘 작동하는 것 같다, 그러나 대신 1 값을 다른 값으로 스와핑하는 경우 다른 2 값과 2 값을 스와핑합니다. 내가 스왑 (0, 1, PTR)을 할 때 점점되어야 할 때 예를 들어, 내가 배열
9,2,4,7,6,7,8,1
를 얻을 :
7,4,9,2,6,7,8,1
를 대신 4, 7 스와핑, 그것은 4 교환입니다 , 9시 9 분. 왜이 일을하는거야?
보이는이를 sizeof 편곡의 printf와 시도 [0] sizeof int를 확인하기 위해 크기에 대한 추가 매개 변수를 전달하고 memcpy와 함께 char [size] 버퍼를 사용하거나 다른 주소임을 확인하면 xor 스왑을 사용할 수 있습니다 (즉, 1과 1을 교환하지 마십시오) – technosaurus