而以下两种是不能实现交换的:

void swap1(int a,int b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}
void swap2(int *a,int *b)
{
    int *temp;
    temp=a;
    a=b;
    b=temp;
}

对于swap1,不能实现交换的理由是,C语言中函数的传的是形参,也就是一个副本,虽然在函数内体内交换了,但对真实的数据没影响。例如以下代码:

{
     int a=1,b=2;
     int ta=a,tb=b;
     int temp;
     temp=ta;
     ta=tb;
     tb=temp;
}
a和b并没有因此交换,交换的只是编译器自动生成的临时变量ta(形参)和tb。

而对于swap2,执行过程如下代码:

{
    int a=1,b=2;
    int *ta=&a,*tb=&b;
    int *temp;
    temp=ta;
    ta=tb;
    tb=temp;
}
printf("a=%d,b=%d",a,b);
pirintf("a'=%d,b'=%d\n",*ta,*tb);可以看到交换了由副本指向的内容,但a,b内容不会变,即原本是ta指向a(ta = &a),tb指向b(tb = &b),交换后,变为ta指向b(ta = &b),tb指向a(tb = &a),相当于换一个指针变量指向a、b的地址,对a和b的值并无影响。

Swap函数(C语言版)相关推荐

  1. c语言泛型swap函数,C 语言实现泛型 swap 函数

    由于C语言是强类型语言,所以通常我们在编写一些函数的时候就需要指定函数的类型.这就会导致同样的函数行为因为处理的类型不同,就可能需要为不同的类型编写不同的函数版本. 比如用于交换两个变量值的如swap ...

  2. c++语言swap函数,C++中swap函数

    本文是我用到swap函数时,对其产生好奇,所以结合网上有关博文写下的.个人水平有限,若有错误的地方,欢迎留言指出.谢谢! 一.通用的函数交换模板 template void swap(T &a ...

  3. c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...

    测试环境: 操作系统: Windows10 64位 运行环境: Visual Studio 10 函数: /********************************************** ...

  4. c语言 swap交换函数_重审C中老生常谈的swap函数交换数值

    概览 本文内容是关于C语言参数传值,以及x86底层实现的计算机科学. 包含了原理速览以及代码示例. 引言 如果你学习过C,可能会对经典的swap函数问题记忆深刻.简单的参数传值并不能在函数外部完成两个 ...

  5. C语言中文件初始化,C语言版GetPrivateProfileString()函数,从初始化文件中指定的条目取得字串...

    /*************************************************************** /* 函 数 名:GetPrivateProfileString /* ...

  6. 【C语言学习笔记】SWAP函数详解

    SWAP函数详解 本篇文章通过swap函数来深入了解C语言中函数的用法,与指针的应用.参考资料来源于经典书籍与技术博客的分享. 在复习完生存期相关的知识点后(详情可转至此处),初步认识了函数与本地变量 ...

  7. C语言中利用Swap函数交换变量a,b

    C语言中利用Swap函数交换变量a,b 常见错误写法 error1 void Sawp_error1(int a,int b) {int tmp;tmp=a;a=b;b=tmp; } int main ...

  8. x什么意思c语言新闻视频视频ok,c语言第x章函数重庆交大版.ppt

    c语言第x章函数重庆交大版 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.取消宏定义(#UNDEF ...

  9. C语言版Tokenize()函数,由分隔符获取字符串

    测试环境: 操作系统: Windows10 64位 运行环境: Visual Studio 10 函数: /********************************************** ...

  10. 数据结构c语言函数大全,数据结构习题库(c语言版).doc

    数据结构习题库(c语言版) 第一章 绪 论 一.基本内容 数据.数据元素.数据对象.数据结构.存储结构和数据类型等概念术语的确定含义.抽象数据类型的定义.表示和实现方法.描述算法的类C语言.算法设计的 ...

最新文章

  1. android values-v21 style 报错,Android 4.4 以上实现透明导航栏和状态栏 Translucent system bar...
  2. unity桌面设置vnc_win7系统通过VNCViewer访问Ubuntu桌面环境的操作方法
  3. java富文本编辑器wangEditor-3.1.1的使用流程
  4. webstrom中的快捷键
  5. [蓝桥杯][2019年第十届真题]后缀表达式(正解!!)
  6. 无法安装 Microsoft Visual Studio 2010 Service Pack 1
  7. socket、listen 等函数的打电话隐喻
  8. 无法打开包括文件: “QTcpSocket”: No such file or directory
  9. [转]OAuth 认证步骤
  10. vcenter服务器修改ip,vcSA修改IP或hostname
  11. oracle 导入报错ORA-39126,ORA-06502,LPX-00230
  12. 如何搞懂html+php实现个人博客网站?【附代码详解】毕业设计 大作业项目
  13. 01.初识redis
  14. asus pc server + geforce titan xp + centos 7
  15. 解决ubuntu 16.04 启动黑屏,出现dev/sda7: clean, xxx/xxx files, xxx/xxx blocks字样问题
  16. NOIP模拟 字符处理(送分or送命?)
  17. 一篇文章读懂《麦肯锡极简工作法》
  18. matlab分析gnss数据,Matlab读取GNSS 观测值o文件代码示例
  19. html怎么让视频背景固定不动,视频如何做到背景不动人物动的效果?背景动人物不动的视频...
  20. Apifox:满足你对 Api 的所有幻想

热门文章

  1. uniappp小程序做一个红包雨的功能
  2. js倒计时原理及实例总结
  3. 软件性能测试 硬件配置,硬件配置、性能测试
  4. Web流程图设计DEMO v0.2
  5. Solidity远程购买示例学习笔记
  6. js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获
  7. 小米mix2安兔兔html5跑分,【小米MIX2评测】性能:为发烧而生名副其实-中关村在线...
  8. [英文邮件] 祝福 + 寻求建议 + 附件 的句子表达
  9. 解析:拉卡拉智能POS的市场布局
  10. 对称加密AES代码实现,实现文件加密与解密