经验技巧7-1 通用交换函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

经验技巧7-1 通用交换函数
交换两个变量的值通常是交换两个数值型变量的值,实际上,可以交换任意两个同类型对象的值,甚至是交换两个不同类型对象的值,这时需要使用内存拷贝函数memcpy来实现。

1.通用交换函数
#define SIZE 48
void TYSwap(void *vp1,void *vp2)
{
char buffer[SIZE];
memcpy(buffer,vp1,SIZE);
memcpy(vp1,vp2,SIZE);
memcpy(vp2,buffer,SIZE);
}
通用交换函数TYSwap借助字符数组buffer,通过三次调用内存拷贝函数memcpy实现交换void指针vp1和vp2指向对象的存储空间的内容,从而达到交换两个对象值的目的。

其中符号常量SIZE的值应为两个对象的最大存储长度。

在使用通用交换函数时,建议参加交换的两个对象的存储长度相同。

1.举例
(1)交换两个同类型对象的值
#define SIZE 8
int main()
{
double x=19.8,y=23.6;
TYSwap(&x,&y);
printf("x=%.2lf,y=%.2lf\n",x,y);
return 0;
}
执行结果为:
x=23.6,y=19.8
实现了交换两个double型变量x和y的值。

(2)交换两个不同类型对象的值
#define SIZE 12
int main()
{
int a[3]={1819043144,111,0};//初始化数据对应字符串"Hello"的值char str[12]="C language";
TYSwap(a,str);
printf("%s,%s\n",a,str);
return 0;
}
执行结果为:
C language,Hello
实现了交换int型数组a和char型数组str各元素的值。

相关文档
最新文档