Swap()函数的详细解析

在c\c++编程上,我们常会用到Swap()函数,实现其两个数据之间的调换。但由于Swap()函数的运用存在诸多限制,很容易造成数据对调失败。下面让我们进入Swap()函数的详细解析,避免我们日常在编程上出现小错误。

错误原因一

代码展示

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

代码分析:

对*temp赋值就是向一个未知的存储单元赋值,而这个未知的存储单元赋值中可能存储着一个有用的数据,这样就有可能破坏系统的正常工作状态。

错误原因二

代码展示:

void Swap(int x,int y)
{int temp;temp=x;x=y;y=temp;
}

代码分析:

由于“单向传递”的“值传递”方式,形参值的改变不能使实参的值随之改变。

错误原因三

代码展示:

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

代码分析:

c语言实参变量和形参变量之间的数据传递是单向的的“值传递”方式。用指针变量做函数参数时同样要遵循这一规则。不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参实参变量所指变量的值。

Swap()案例正确展示

代码展示:

#include<stdio.h>
int main()
{void Swap(int *p1,int *p2);int a,b;int *x,*y;x=&a;y=&b;printf("请输入a、b的值:\n");scanf("%d%d",&a,&b);printf("交换前a、b的值:\n");printf("a=%d b=%d\n",a,b);Swap(x,y);printf("交换后a、b的值:\n");printf("a=%d b=%d\n",a,b);return 0;
}
void Swap(int *p1,int *p2)
{int temp;temp=*p1;*p1=*p2;*p2=temp;
}

运行结果为:

总结

指针要点:

1、指针变量前面的“*”表示该变量为指针型变量。
2、在定义指针变量时必须指定基类型。
3、指向整型数据的指针类型表示为“int *”,读作“指向int的指针”或简称“int指针”。
4、指针变量中只能存放地址。

Swap()函数的详细解析相关推荐

  1. trim函数实现php,php trim函数的详细解析

    本篇文章给大家带来的内容是关于php trim函数的详细解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 字符串的处理在任何程序中应该是最最常见的了吧.php 的trim函数就是用 ...

  2. VUE 钩子函数超详细解析

    点击上方蓝色字体关注我吧 一起学习,一起进步,做积极的人! 前言 Vue 实例在被创建时,会经过一系列的初始化过程,初始化过程中会运行一些函数,叫做生命周期钩子函数,通过运用钩子函数,用户在可以在Vu ...

  3. java 对比函数_java中字符串比较函数和操作函数,详细解析

    java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...

  4. C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)

    目录 一.前言 二.什么是getchar()函数 三.getchar()函数的返回类型与机制 四.连续单个字符串 (代码演示) 五.getchar()函数其他用法,实战演练(重点) (1)按照题目写出 ...

  5. c语言数据结构kmp中next计算,数据结构——关于KMP算法中next函数的详细解析

    以前看到数据结构中字符串的模式匹配时,花了半天的时间,才把KMP算法中的next函数整明白了,结果过了几天在看到这时,只记得next[j+1]=next[j]+1,但是有时候能套公式正确算出,有时候就 ...

  6. c语言 freopen txt_C语言文件操作函数freopen详细解析

    今天做USACO  用到了文件的操作. 之前做USACO只是格式化的些 写  freopen("xxx.in","r",stdin)  和"freop ...

  7. RC522详解(RC522arduino读写函数的详细解析)

    RC522详解 前言 什么是RFID? 什么是RC522? 工作原理 M1卡存储结构 arduino IDE中的MFRC522.h的中文翻译 arduino和RC522通讯的案例 常用函数说明 写入函 ...

  8. Mixin 函数的详细解析

    什么是Mixin 函数 在编程中,mixin 类似于一个固有名词,可以理解为混合或混入,通常不进行直译,本文也是同样. Mixin 函数 是指能够给对象添加属性或行为,并可以通过管道连接在一起的组合工 ...

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

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

最新文章

  1. CC2541对AT24CXX系列存储器的支持
  2. 4j 禁止类输出日志_logback 日志详细讲解
  3. AcWing 1058. 股票买卖 V
  4. 十行代码实现十亿图片检索,我们把它开源了
  5. mysql多条件批量查询,且数据量大分批查询
  6. matlab对主动悬架的仿真分析,运用MatlabSimulink对主动悬架力学仿真与分析.doc
  7. 计算机软件工程自考,自考软件工程试题及答案2021年10月
  8. 信道估计(一):信道估计基础知识
  9. 树莓派3B+ WiFi 无线连接及配置
  10. 小米2s自带rec刷root_小米手机 解锁 Root 刷第三方ROM
  11. 减脂单吃全麦面包太乏味?全麦面包的N种吃法合集
  12. 多个div在同一行显示
  13. 微信小程序实现两数相加
  14. CX32l003 点亮0.96寸OLED屏幕
  15. E盘里多了个ppsds.pgf文件是怎么回事?
  16. 如何分享CSDN的博客
  17. 相关距离 matlab,你只有一个ArcGIS和Matlab的距离!
  18. 西伯利亚发现万年猛犸干尸
  19. 【虹科传感器小课堂】眨眼之见:通过气体检测进行热流量测量和校正
  20. python 残差图_python – 如何在显示matplotlib动画后删除Jupyter输出中的残差图?

热门文章

  1. Crash的数字表格
  2. 一个比requests还好用的Python高效爬虫库,效率提高一倍!
  3. 70个经典人生感言(转)
  4. 一个幸福家庭必备的五个基本要素
  5. mysql自增获取id
  6. 移动广告平台及运营模式
  7. 用python画小人_pythonh制作抖音上非常火的送心小人
  8. 门店如何提高会员粘性
  9. sqlbulkcopy mysql_SqlBulkCopy 批量复制数据到数据库
  10. 【玩转RT-Thread】CPK-RA6M4智慧门禁系统教学