c语言中的Swap函数
在学习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函数相关推荐
- c语言中的printf函数_C语言中的printf()函数与示例
c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...
- c语言的point函数,C语言中friend友元函数详细解析
C语言中friend友元函数详细解析 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字frien ...
- C语言中的strstr函数
C语言中的strstr函数 说到strstr函数,可能很多人会比较陌生,对比其他的字符串函数比如strcpy,strcmp等等,它的确比较少用,但其实他也是一个非常有用和常见的函数,今天,就让我们一起 ...
- C语言中的atoi函数的实现
C语言中有很多的库函数,其实平时没事的时候多去实现一下里面的库函数还是很有用的,下面就来讲一讲C语言中的atoi函数,这个函数的主要功能是将一个字符串转化为一个数字,可能第一眼看上去,你会觉得这是一个 ...
- main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...
PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...
- C语言中的sprint函数,求sprintf函数的详解
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:求sprintf函数的详解,要附带例,粘贴来的也可以,只 问题详情:还有就是我还想要一些常用的宽度修饰之类的输入或者输出格式:回答: ...
- c语言里面gets(a)是什么意思,C语言中的gets()函数
在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串, 比如:I love MIT 这种情况,scanf() ...
- C语言中的Sleep函数的解读
Sleep函数: 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include <windows.h& ...
- sleep函数的作用c语言,C语言中的sleep函数是什么意思【详细介绍】
计算机知识:C语言中的Slee函数 Sleep函数简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned milliseconds); 在V ...
最新文章
- python开发【第四篇】:python基础之函数
- 运行Pangolin时提示错误
- (16)FPGA面试技能提升篇(Python)
- Ext.data.Store 获取Json数据只有一行,而且是最后一行
- 2. mysql 基本命令
- SQL——汇总分组排序
- 去除input默认的加减号
- Re:从零开始的DS学习 十大排序算法我都整理好了
- 程序设计大作业---词汇表生成
- 如何判断一个多边形的环是逆时针还是顺时针
- 计算机网络CiscoPacket Tracer实验
- postfix smtpd_recipient_restrictions配置错误导致smtpd问题
- 手机安装ubuntu
- 【C#】软件注册和认证
- (Keil) Debug Simulation 操作
- PEAR modules 环境检测安装软件始终 NOK
- OpenGL的矩阵变换详解——有图有真相
- JSR 303 以及 拦截器
- 全国计算机软考长沙考点,湖南软考考点在哪?湖南软考考点安排表
- java httppost 实例_实战演练java 调用http接口 post 例子