在学习C语言时,我们学到指针这里的时候,使用到Swap()函数,下面是关于Swap函数的一些见解。

首先我们通常会用下面的代码来实现Swap函数整型变量的交换:

void Swap(int *p1,int *p2)
{int tmp;tmp = *p1;*p1 = *p2;*p2 = tmp;
}

下面这三种都是不能实现的常见的几种错误:

void Swap_err1(int a,int b)
{int tmp = a;a = b;b = tmp;
}void Swap_err2(int *p1,int *p2)
{int *tmp = p1;p1 = p2;p2 = tmp;
}

err1之所以不能实现交换的理由是,是因为C语言中函数的传的是形参,对真实的数据没影响。
而err2不能实现交换的原因是,两个整数的交换在于其数值的交换,而非其所在地址的交换,因为最终输出的是其值。

void Swap_err3(int *p1,int *p2)
{int *tmp;*tmp = *p1;*p1 = *p2;*p2 = *tmp;
}

err3涉及到野指针(悬挂指针),在tmp=p1这句其已经崩溃。(具体野指针会后面单独提出)

int main()
{int a = 10;int b = 20;Swap(&a,&b);printf("%d,%d\n",a,b);return 0;
}

将输出 20 10
前面的代码是对Swap函数的具体实现,声明整形变量a,b并对其赋值,将两个整数通过指针将其地址的数值交换。
需要注意的是数值之间应该是同种类型,上面的swap()只能处理整型变量,我们需要同时可以处理char、double、long型的变量,我们可以使用void*和size_t这些类型来达到。

c语言中的Swap函数相关推荐

  1. c语言中的printf函数_C语言中的printf()函数与示例

    c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...

  2. c语言的point函数,C语言中friend友元函数详细解析

    C语言中friend友元函数详细解析 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字frien ...

  3. C语言中的strstr函数

    C语言中的strstr函数 说到strstr函数,可能很多人会比较陌生,对比其他的字符串函数比如strcpy,strcmp等等,它的确比较少用,但其实他也是一个非常有用和常见的函数,今天,就让我们一起 ...

  4. C语言中的atoi函数的实现

    C语言中有很多的库函数,其实平时没事的时候多去实现一下里面的库函数还是很有用的,下面就来讲一讲C语言中的atoi函数,这个函数的主要功能是将一个字符串转化为一个数字,可能第一眼看上去,你会觉得这是一个 ...

  5. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...

    PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...

  6. C语言中的sprint函数,求sprintf函数的详解

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:求sprintf函数的详解,要附带例,粘贴来的也可以,只 问题详情:还有就是我还想要一些常用的宽度修饰之类的输入或者输出格式:回答: ...

  7. c语言里面gets(a)是什么意思,C语言中的gets()函数

    在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串, 比如:I love MIT 这种情况,scanf() ...

  8. C语言中的Sleep函数的解读

    Sleep函数: 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include <windows.h& ...

  9. sleep函数的作用c语言,C语言中的sleep函数是什么意思【详细介绍】

    计算机知识:C语言中的Slee函数 Sleep函数简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned milliseconds); 在V ...

最新文章

  1. python开发【第四篇】:python基础之函数
  2. 运行Pangolin时提示错误
  3. (16)FPGA面试技能提升篇(Python)
  4. Ext.data.Store 获取Json数据只有一行,而且是最后一行
  5. 2. mysql 基本命令
  6. SQL——汇总分组排序
  7. 去除input默认的加减号
  8. Re:从零开始的DS学习 十大排序算法我都整理好了
  9. 程序设计大作业---词汇表生成
  10. 如何判断一个多边形的环是逆时针还是顺时针
  11. 计算机网络CiscoPacket Tracer实验
  12. postfix smtpd_recipient_restrictions配置错误导致smtpd问题
  13. 手机安装ubuntu
  14. 【C#】软件注册和认证
  15. (Keil) Debug Simulation 操作
  16. PEAR modules 环境检测安装软件始终 NOK
  17. OpenGL的矩阵变换详解——有图有真相
  18. JSR 303 以及 拦截器
  19. 全国计算机软考长沙考点,湖南软考考点在哪?湖南软考考点安排表
  20. java httppost 实例_实战演练java 调用http接口 post 例子

热门文章

  1. Mysql截取字符串
  2. 微信编辑器如何识别错别字
  3. 单片机的三大秘境之揭秘 KEIL 调试那些不为人知的事
  4. 数据可视化作品都有哪些
  5. 薅羊毛、软色情、猜我是谁,揭开黑产的“猫鼠游戏”
  6. sublime text3 自动对齐快捷键
  7. 升级android 4.4.4,一加手机升级安卓4.4.4教程
  8. hevc参考代码matlab版,HEVC_matlabcode
  9. 复合句 - 定语从句
  10. 最强大的漏洞扫描与分析软件(Nessus)