子函数中实现主函数中两整形变量值的交换

指针做子函数参数

#include<stdio.h>
void swap1(short m,short n)
{
 short temp=0;
 temp=m;
 m=n;
 n=temp;
}
void swap2(short *pm,short *pn)
{
 short *temp=NULL;
 temp=pm;
 pm=pn;
 pn=temp;
}
void swap3(short *pm,short *pn)
{
 short temp=0;
 temp=*pm;
 *pm=*pn;
 *pn=temp;
}
main()
{
 short x,y=0;
 x=0x1234;
 y=0x5678;
 printf("before swap1() exchange:x=%x,y=%x\n",x,y);
 swap1(x,y);//形参互换,未影响实参。 
 printf("after swap1() exchange:x=%x,y=%x\n",x,y);
 printf("before swap2() exchange:x=%x,y=%x\n",x,y);
 swap2(&x,&y);//实参为x,y地址,形参pm(指向x),pn(指向y)互换,未对其所指内存做读写操作 
 printf("after swap2() exchange:x=%x,y=%x\n",x,y);
 printf("before swap3() exchange:x=%x,y=%x\n",x,y);
 swap3(&x,&y);//实,形参与swap2类似,互换指针pm,pn所指内存区域的数据(x,y) 
 printf("after swap3() exchange:x=%x,y=%x\n",x,y);
 return 0;
}
发布了91 篇原创文章 · 获赞 84 · 访问量 4375

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/104736164