データ型に関係のないswap.c
Cの勉強を始めたばかりの頃、swap関数を勉強していた頃、DataTypeごとに関数を作成するのが面倒だったのを覚えています.
最近、Cでもっと勉強して、データ型に関係のないswap()関数をいくつか知ったので、この文章を書きました.
swapにより簡単な例を実装し,voidポインタを用いてデータ型に依存しない関数を実装する方法を説明した.
ありがとうございます.
最近、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ポインタを用いてデータ型に依存しない関数を実装する方法を説明した.
ありがとうございます.
Reference
この問題について(データ型に関係のないswap.c), 我々は、より多くの情報をここで見つけました https://velog.io/@jjag1015/데이터형에-관계없는-swap.cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol