题目:使用函数实现两个数的代码

常规思路:

定义函数,调用函数,完成交换。

你的代码是否和下面一样呢?

#include<stdio.h>
#include<stdlib.h>void Swap(int a,int b)
{int tmp = a;a = b;b = tmp;}int main()
{int x = 10;int y = 20;Swap(x,y);printf("%d %d\n", x, y);system("pause");return 0;
}

如果你的代码和上面一样,那恭喜你,成功的掉入到坑。

为什么呢?这个时候我们就要打破常规的思路,因为涉及到了实参和形参。

注意:

定义函数里的参数叫做形参(形式参数)调用函数里的参数叫做实参(实际参数)

函数的形参是实参的一份拷贝(副本),上面的代码中,只是交换定义函数里的参数,只对副本(形参)进行交换当然不会实现对实参(我们实际要交换的变量)的交换。也就是说:我们只是交换a和b的值,并没有对x和y进行交换,我们真正要交换的是a和b的值。

这个时候就要使用传指针的方法来修改函数外部的变量。对形参进行指针类型的转变,相当于把两个毫无关系的参数连接起来,以下是具体代码(仅供参考)

#include<stdio.h>
#include<stdlib.h>void Swap(int* a,int* b)
{int tmp = *a;*a = *b;*b = tmp;
}int main()
{int x = 10;int y = 20;//注意,这里传的参数是地址Swap(&x,&y);printf("%d %d\n", x, y);system("pause");return 0;
}

上面是传地址,也可以通过传引用的方式进程参数的传递

心得体会:

第一次理解起来稍微有点困难,这个应该算函数里较难的一种,不过第二次再去看的话,理解起来就容易多了,在错误中不断成长,不断努力,加油!

使用函数实现两个数的交换(C语言)相关推荐

  1. (指针详解1)例:用函数编写两个数的交换

    ​​​前言: 我们在初学c语言时都会遇到的一个题目,那就是交换两个数字的大小,我们需要定义两个变量保存两个值,再定义一个temp进行中间值保存 int temp=0: int a=10: int b= ...

  2. C语言用fun函数实现两个数的交换

    #include <stdio.h> void fun(int *x,int *y)//定义fun函数,此时需要注意与main函数时的定义方式相同 {     int t;//定义一个中间 ...

  3. 用指针和函数的方法完成两个数的交换

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容6]用指针和函数的方法完成两个数的交换 传递规则:主函数 ...

  4. 指针,指针:分装一个函数,实现两个数的交换。 指向固定的区域

    1.指针的引入 //第9行,取值运算符*,他把后面跟的内存地址中的数据"取出来": 2.指针变量的引入 什么是指针变量:存放地址的变量 什么是指针变量:存放指针的变量 指针 = 地 ...

  5. 【c语言】输入两个数,交换这两个数后,再输出

    <程序设计基础实训指导教程-c语言>杨莉 龚义建 科学出版社 ISBN 978-7-03-032846-5 p9 2.1.2 上机实训内容 [实训内容3] 编程实现:输入两个数,交换这两个 ...

  6. 实现两个数的交换(异或,加减)

    1. 通常我们通过设置临时变量来实现两个数的交换,如下: void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;} 2.还可以通过异或来实现两 ...

  7. 【C/C++】异或操作巧妙实现两个数的交换操作

    今天在看OpenGL加载TGA格式图像用作纹理的代码时,看到关于RGB(A)顺序转换的一行代码时,捉一开始感到很困惑,后来想了想,就是实现交换操作. 原始代码: texture->imageDa ...

  8. 利用函数求两个数的最大值

    利用函数求两个数的最大值 <!DOCTYPE html> <html lang="en"><head><meta charset=&quo ...

  9. (1)输入直角三角形的两个直角边的长度a,b,求斜边c的长度 (2) 编写一个程序,用于两个数的交换

    (1)输入直角三角形的两个直角边的长度a,b,求斜边c的长度 (2) 编写一个程序,用于两个数的交换 import math a = float(input('请输入直角三角形直角边a的长度:')) ...

最新文章

  1. DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子
  2. 枚举 ---- B. Power Sequence[Codeforces Round #666 (Div. 2)][暴力]
  3. 设计模式之享元模式、例子分析
  4. ContextMap详解
  5. ps aux 和ps -aux和 ps -ef的选择
  6. Mysql DBA 20天速成教程
  7. 公务员因微信办公被处分!如何避免微信办公导致信息泄密?
  8. 高德地图输入地址获取经纬度_不打开地图也能获取地址-利用百度地图API和Python实现...
  9. Java完全自学手册,从外包到大厂,再到年薪100万都靠它
  10. Weblogic 部署问题及解决方法
  11. 全世界国家中英文名称以及地区区号json格式【资源】
  12. MD5信息摘要算法原理及破解原理
  13. ArcGIS js api中关于比例尺单位改为中文的方式
  14. Excel使用技巧随笔
  15. FER 人脸情绪识别系统
  16. Go Micro介绍与入门
  17. 飞冰 - ICE Design Pro 使用指南
  18. SpringBoot整合Elasticsearch,2021最新Java面试真题解析
  19. asp(动态服务器页面)
  20. 01.STM32学习方法

热门文章

  1. 【淘宝SEO】实践经验总结几个常用的论坛推广技巧
  2. 实录 | 黄东旭:开源与基础软件创业在中国
  3. 北华航天工业学院计算机与遥感信息学院,2020年北华航天工业学院计算机与遥感信息技术学院硕士研究生招生优秀目录...
  4. 天猫新店如何做好运营规划?
  5. 大数据学习笔记1:数据仓库的历史
  6. IntelliJ IDEA 下载安装及配置使用超详细图文教程
  7. 一个三臂非劣效性检验的包简介——“ThreeArmedTrials”
  8. Linux 命令tail -f | 管道条件(sed,awk)文件,不输出原因
  9. web.xml配置详解
  10. 企业服务器3d建模系统,3d云设计服务器