通过void指针实现跨类型变量交换函数

来源:互联网 发布:淘宝app 数据抓取 编辑:程序博客网 时间:2024/05/17 08:25
#include <stdio.h>#include <stdlib.h>#include <string.h>void fun(void **src,void **dst){void *tmp;tmp = *src;*src = *dst;*dst = tmp;}void swap(void *src,void *dst,int size){void *tmp = malloc(size);memcpy(tmp,src,size);memcpy(src,dst,size);memcpy(dst,tmp,size);free(tmp);}int main(void){int m = 8,n = 9;int h = 5,k = 6;int *ph = &h,*pk = &k;printf("befor swap[%d %d]\n",m,n);swap(&m,&n,4);printf("after swap[%d %d]\n\n",m,n);printf("befor fun[%d %d]\n",*ph,*pk);//printf("befor fun[%p %p]\n",ph,pk);fun((void**)&ph,(void**)&pk);printf("after fun[%d %d]\n",*ph,*pk);//printf("befor fun[%p %p]\n",ph,pk);return 0;}

0 0