1. 值传递交换值失败。

#include<stdio.h>
#include<stdlib.h>
void swap(int a, int b)
{int t;t = a;a = b;b = t;printf("在函数内部交换后的值为:%d %d\n\n", a, b);
}
int main()
{int m, n;printf("输入两个数字:");scanf("%d %d", &m, &n);printf("\n");swap(m, n);printf("调用swap函数后的值为:%d %d", m, n);return 0;
}

  • 调用swap()函数时采用值传递,通过函数调用将m 和 n的值分别传给整型变量 a, b,在swap()函数中操作的是 a和 b的值,并不是 m和 n的值,虽然 a, b 的值进行了交换,,但结果不会带回到main()中,所以 m,n 的输出值无变化。

2. 地址传递交换地址失败。

#include<stdio.h>
#include<stdlib.h>
void swap(int *a, int *b)
{int *t;t = a;a = b;b = t;printf("在函数内部交换后的值为:%d %d\n\n", *a, *b);
}
int main()
{int m, n;printf("输入两个数字:");scanf("%d %d", &m, &n);printf("\n");swap(&m, &n);printf("调用swap函数后的值为:%d %d", m, n);return 0;
}

  • swap()函数使用指针 a, b 作形参,但交换的是指针 a,b ,也就是a, b存储的地址值,不是它们指向的整型变量 *a, *b ,函数执行完成后,a 指向 n ,b 指向 m,a和 b的内容发生了变化,而 m和 n的内容并没有改变。

3. 地址传递交换值成功。

#include<stdio.h>
#include<stdlib.h>
void swap(int *p, int *s)
{int t;t = *p;*p = *s;*s = t;printf("在函数内部交换后的值为:%d %d\n\n", *p, *s);
}
int main()
{int m, n;printf("输入两个数字:");scanf("%d %d", &m, &n);printf("\n");swap(&m, &n);printf("调用swap函数后的值为:%d %d", m, n);return 0;
}

  • 传递地址值,就是将 m,n 的地址赋给指针形参 a,b ,在swap()函数中对 *a,*b 的操作实际就是对 m,n 的操作,修改结果自然会带回到main()中。

swap()函数实现变量值的交换相关推荐

  1. 通过位运算进行两个变量值的交换功能

    通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...

  2. 【C语言】两个变量值的交换——指针

    C语言中交换两个变量的值可以在主函数中直接实现,也可以通过子函数来实现.下面我们介绍用子函数实现的情况. 1.将两个变量的值作为实参直接传递,在子函数内部定义一个普通变量来对两个形参进行交换,并分别在 ...

  3. 实现Swap函数,将两个数交换

    刚刚对指针做了基础的学习,那么指针的作用在哪里呢,我们就用Swap函数作一下分析. 假如我们要交换a和b的值 void Swap(int a, int b)//交换不成功 {int tmp = a; ...

  4. 不使用第三个变量,实现两个变量值的交换

    static void Main(string[] args)         {             int a = 4, b = 5;             Console.WriteLin ...

  5. python 匿名函数捕获变量值 (执行时的值)

    先看下下面代码的效果: >>> x = 10 >>> a = lambda y: x + y >>>x= 20 >>> b = ...

  6. Python实战从入门到精通第十六讲——匿名函数捕获变量值

    用lambda定义了一个匿名函数,并想在定义时捕获到某些变量的值. 先看下下面代码的效果: >>> x = 10 >>> a = lambda y: x + y & ...

  7. javaSE-基础篇-经典赋值:两变量值的交换

    我们现在有int a = 2,int b = 3;如何把a和b两个变量的值进行交换呢?对于刚接触编程的人来讲,你可能会想,这有什么难的,a = b ; b = a;不就完了.事实上,还真没这么简单: ...

  8. java如何用异或符号实现两个变量值的交换

    在网上看到如何利用异或来实现两个变量的交换,感觉很方便,但是理解起来优点难度,做个笔记,加深理解. 首先先对异或有个了解: 相同的异或之后则为0,不相同的则为1. a:1000 1010, b:100 ...

  9. JAVA 两个变量值的交换

    1.使用一个中间值. public class Test01 {//两个数的值交换public static void main(String[] args) {int a =1 ;int b = 2 ...

最新文章

  1. 基础、数据、开发、部署,AI 时代企业的全方位升级
  2. 5个常见的SD-WAN挑战以及如何应对-Vecloud
  3. window mysql proxy_window下mysql-proxy简单使用
  4. Matlab | 空间域水印技术:LSB(Least Significant Bit):计算峰值信噪比PSNR(matlab源代码)
  5. C51对标准C语言的扩展 / 数据类型
  6. Intel X86 CPU寄存器学习笔记
  7. SNN系列|神经元模型篇(4) LIF
  8. LDPC — 信道编码
  9. 程序员不能错过的20个学习网站
  10. Codeforces 918D - MADMAX
  11. 大规模网络拓扑测量与分析研究1-论文
  12. 005-Sencha Cmd 5升级指南
  13. 程度性数据python分析_python数据分析实战之AQI分析
  14. 后端 php mysql_搭建并部署PHP + MySQL后端环境
  15. Oracle EBS中分类账和法人实体 的关系(有sql语句实例)
  16. Python、C语言技能树测评
  17. MN梦奈宝塔主机系统V1.5版本发布
  18. 计算机等级考试一级在线模拟,全国计算机等级考试一级模拟试题1
  19. python根据文本生成词云图
  20. Python编程:从入门到实践 第三章--函数

热门文章

  1. win7屏保怎么设置_酷屏保怎么设置?酷开系统不可不知的玩法!
  2. matlab版本转换
  3. macbookpro安装ch340驱动
  4. python 字符串删除首尾空格
  5. 升级Mac内置的vim
  6. 第二章 离散时间信号和系统的时域描述分析 2.2.2 线性时不变系统
  7. 【AI测试】人工智能测试整体介绍——第六部分
  8. 用unity做的简单小游戏------“小球酷跑“
  9. 大数据发展必备三个条件
  10. 国际计算机网络与信息安全博览会,2018中国(成都)国际计算机网络及信息安全展览会暨论坛...