浅析C语言中的5个swap函数
来源:互联网 发布:linux 创建卷的过程 编辑:程序博客网 时间:2024/04/29 02:46
这些操作细节应该多积累,多练才能掌握的好啊!
#include "stdafx.h"/*-----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;}
swap1只进行了值传递,所以函数调用结束后形参被释放,不能实现实参的值交换;
swap2直接使用全局变量,这样swap2函数和main函数操作的是同一个变量(地址和值都一样),可以实现值交换;
swap3使用传地址的方式,通过修改内存块来实现变量的值交换,是可以的。
swap4使用引用(&)的方式,这样是给mian函数中待交换的变量起一个别名,并把把别名作为形参在swap4中进行处理,这其实就实现了形参和实参的地址和内容完全一样,当然可以实现值交换,swap4的效果和swap2的一样,但这种定义方式更利于程序的调试和维护,同时也可以减小内存开销。
swap5中虽然也把变量的地址传到了函数中,但在函数内部并没用修改地址指向的内存块而是把地址在形参上完成交换,swap5函数运行结束,所有的工作都会都是,而main函数中的变量也没有实现交换,这种情况和swap1类似。
参考资料:程序设计基础(C语言版)秦军主编,机械工业出版社- 浅析C语言中的5个swap函数
- C语言swap函数
- C语言swap函数
- c语言swap函数总结
- C语言swap函数总结
- c语言swap函数总结
- C语言函数浅析
- 浅析C语言中的setjmp与longjmp函数
- 浅析C语言中的setjmp与longjmp函数
- C语言实现泛型swap函数
- 温故而知新:C语言中swap函数
- linux学习之c语言swap函数
- C语言之swap()函数总结
- 浅析C语言中的指针
- C语言swap
- c语言中的函数
- C语言中的函数
- C语言中的函数
- 如何加快sql的查询速度
- 发布程序时,由于程序使用了Excel文档,出现未在计算机上注册OleDB的错误
- mysql中文乱码,找了一些资料就这些,搞了一通搞好了
- 从现在开始
- Go语言环境搭建开发环境和配置
- 浅析C语言中的5个swap函数
- vs2012的一个小问题
- MySQL-python-1.2.4b4.win32-py2.7提示报错,无法安装的解决方案
- Linux中的虚拟地址、物理地址和内存管理方式
- C++ map的基本操作和使用
- oracle 学习笔记(十三) 数据库设计三范式
- C++Vector用法
- C中标准内存分配函数realloc,malloc,calloc
- win7安装Oracle过程