C语言中swap的作用和用法

 我来答
刺任芹O
2022-11-16 · TA获得超过6.1万个赞
知道顶级答主
回答量:38.7万
采纳率:99%
帮助的人:8258万
展开全部

1.作用:swap的意思是交换两个变量的值,是一个自定义函数。

2.用法使a和b的值进行互换。

例如:void swap(int*p1,int*p2)    //*p1=a;*p2=b;

改变指针指向的地址的值,即a和b的值互换。

3.其他用法

swap1只进行了值传递,所以函数调用结束后形参被释放,不能实现实参的值交换;

swap2直接使用全局变量,这样swap2函数和main函数操作的是同一个变量(地址和值都一样),可以实现值交换;

swap3使用传地址的方式,通过修改内存块来实现变量的值交换,是可以的。

swap4使用引用(&)的方式,这样是给mian函数中待交换的变量起一个别名,并把把别名作为形参在swap4中进行处理,这其实就实现了形参和实参的地址和内容完全一样,当然可以实现值交换,swap4的效果和swap2的一样,但这种定义方式更利于程序的调试和维护,同时也可以减小内存开销。

swap5中虽然也把变量的地址传到了函数中,但在函数内部并没用修改地址指向的内存块而是把地址在形参上完成交换,swap5函数运行结束,所有的工作都会都是,而main函数中的变量也没有实现交换,这种情况和swap1类似。

具体代码如下:

  • /*-----try to swap the value of a and b, but it does not work out.*/  

  • /*void swap1(int x,int y) 

  • int temp; 

  • temp = x; 

  • x = y; 

  • y = temp; 

  • }*/  

  • /*------using the global variables can implement the swap----*/  

  • /*int a(3),b(5); 

  • //the declarations of a and b in the main function should be commented out. 

  • void swap2() 

  • int temp; 

  • temp = a; 

  • a = b; 

  • b = temp; 

  • }*/  

  • /*----using the pointer to pass the address to the swap function*/  

  • /*void swap3(int *px,int *py) 

  • int temp; 

  • temp = *px; 

  • *px = *py; 

  • *py = temp; 

  • }*/  

  • /*----using the reference operator(&)-----*/  

  • void swap4(int &x, int &y)  

  • {  

  • int temp;  

  • temp = x;  

  • x = y;  

  • y = temp;  

  • }  

  • /*----meaningless swap---*/  

  • /*void swap5(int *px,int *py) 

  • int *p; 

  • p = px; 

  • px = py; 

  • px = p; 

  • }*/  

  • int main(int argc, char* argv[])  

  • {  

  • int a(3),b(5);  

  • printf("before swap:%3d %3d\n",a,b);  

  • swap4(a,b);  

  • printf("after swap:%3d %3d\n",a,b);  

  • return 0;  

  • }  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式