データ型に関係のないswap.c


Cの勉強を始めたばかりの頃、swap関数を勉強していた頃、DataTypeごとに関数を作成するのが面倒だったのを覚えています.
最近、Cでもっと勉強して、データ型に関係のないswap()関数をいくつか知ったので、この文章を書きました.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void swap(void* a, void* b, int N) {
    void *t;		
    t = malloc(N);		// 임시 공간 N만큼 확보.
    memcpy(t, a, N);	
    memcpy(a, b, N);
    memcpy(b, t, N);
    free(t);			// 임시 공간 free
}

/*
	memcpy(void* a, void* b, int N)는 첫번째 void포인터가 
   	가리키는 데이터 공간에 두번째 void포인터가 가리키는 데이터 공간
   	N만큼을 복사하는 함수이다.
*/

int main(void) {
    int a = 3;
    int b = 4;
    float x = 1.2;
    float y = 4.3;
    
    printf("a = %d, b = %d \n", a ,b);
    swap(&a, &b, sizeof(int));
    printf("After swap...\n");
    printf("a = %d, b = %d \n", a ,b);
    
    printf("-------------------------\n");
    
    printf("x = %f, y = %f \n", x ,y);
    swap(&x, &y, sizeof(float));
    printf("After swap...\n");
    printf("x = %f, y = %f \n", x ,y);


	return 0;
}
<出力結果>

swapにより簡単な例を実装し,voidポインタを用いてデータ型に依存しない関数を実装する方法を説明した.
ありがとうございます.