通过void指针实现跨类型变量交换函数
2014-03-27 09:18
423 查看
#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; }
相关文章推荐
- 不通过临时变量实现交换的函数
- C语言实现的线性表 函数形参:指针类型与变量类型的区别 (SqList *L)(SqList L)
- 练习2: 通过交换函数的实现,学习指针的用法。
- 函数和递归(组合数,孪生素数,用指针实现变量交换,求解二院一次方程组)
- 通过交换虚函数表指针查看虚函数的实现方式
- 指针的应用(c语言)——(子函数实现交换父函数中变量的值)
- 通过函数给指针赋值(二)交换两个变量的值
- C语言学习6 :指针的定义,指针类型要合法,指针要初始化,指针做函数参数,数组和指针的通用性,指针+1所代表的空间,void * 指针,交换函数中的指针,数组和字符型指针区别,字符型指针的应用,使用指针完成字符操作函数
- 函数多个返回值(返回多个参数/局部变量)通过双重指针来实现
- Item 45: 利用成员函数模板接受所有兼容类型(智能指针的部分实现)
- UNIX_C 环境下实现输入一个字符,不用回车直接输入功能(类型windows下_getch(void)函数)
- 通过自执行函数实现块级作用域时变量作用域问题。
- 不通过临时变量实现两个变量的交换(源自CSDN论坛帖)killme2008'blog
- 通过友元函数实现两个不同类中私有成员变量的数据交换
- C语言入门 指针通过交换变量地址交换变量值 源码
- 写一方法来实现两个变量的交换。在主调函数中定义两个整型变量,并初始化,调用交换方法,实现这两个变量的交换。(使用ref参数)
- 通过异或运算实现两个变量的交换(不需借助第三个变量)
- Linux c — void类型变量和指针
- typedef int(init_fnc_t) (void) 和 typedef int(*init_fnc_t) (void)函数类型和函数指针的区别
- 编写函数实现对两个变量的值进行交换