如何正确的使用函数交换两个数值.

原创 2018年04月15日 11:11:38
首先错误的方法:
#include<stdio.h>
void exchange(int, int);
void exchange(int one, int another)
{
int tmp;
tmp = one;
one = anthoner;
another = tmp;
}
int main()
{
int num1;
int num2;
scanf('%d %d', &num1,&num2);
exchange(num1, num2);
printf('交换后:%d %d', num1, num2);
return 0;
}
因为函数只是对其内的局部变量进行了值的交换,而没有真正的对num1,num2进行值的交换,实质上是函数调用栈顶指针上移,函数调用完之后栈顶指针回落,并没有对num1,num2在栈所占的位置操作。
接下来正确的方法是:

#include<stdio.h>
void exchange(int *, int *);
void exchange(int *one, int *another)
{
int tmp;
tmp =*one;
*one = *anthoner;
*another = tmp;
}
int main()
{
int num1;
int num2;
scanf('%d %d', &num1,&num2);
exchange(&num1, &num2);
printf('交换后:%d %d', num1, num2);
return 0;
}
把函数形参变量的数据类型换成int *,实参换成num1和num2的首地址后,函数调用时就变成了:把num1和num2所在内存空间的首地址赋值给one和another两个指针变量,然后函数内对one,another的改变就是对实参num1,num2的改变!

过程:把one所指向的空间的值复制一份赋值给tmp,再把another所指向的空间的值赋值给one所指向的空间,最后再把tmp空间的值赋值给another所指向的空间。

java 两个数值交换的6种方法

1.  第三变量        temp = a ;        a = b;        b = temp; 2.  + - 运算         a = a + b;   b = a...
  • yhsbzl
  • yhsbzl
  • 2014年02月06日 14:35
  • 488

swift交换两个变量的数值方法

编写一个程序,能交换两个变量的数值 例如: 变量a值为20,变量b值为30,调用函数后,a的值变为30,b的值变为20 func swap(a: inout Int , b:inout Int){ ...
  • Beixiqi
  • Beixiqi
  • 2017年10月21日 10:50
  • 306

两个数值互换的几种方式

一.建立临时变量        1.普通的方法:                  思路简介:建立一个临时变量,通过temp=a,a=b,b=temp来实现交换。                  缺...
  • Fenglele_Fans
  • Fenglele_Fans
  • 2017年09月05日 10:26
  • 230

宏定义,交换两个值

问题及代码: 定义一个带参的宏(或者模板函数),带有三个参数,第一个参数为类型,后两个参数的值互换, 并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。 代码: #include...
  • sh1501719577
  • sh1501719577
  • 2016年11月20日 14:20
  • 819

<实例>C++中交换两数值的几种方法

交换两数值,最常用的就是使用指针,下面有三种指针的方法
  • taotao1990228
  • taotao1990228
  • 2014年05月29日 11:05
  • 1141

C++中两个数值交换的几种方法

C++中两个数值交换的几种方法
  • ccmmfit
  • ccmmfit
  • 2015年05月02日 16:22
  • 2787

Swift利用inout交换两个数的位置

func test(inout a:Int , inout b:Int) {     let temp = a     a = b     b = temp } var a = 10 va...
  • BaojianLeo
  • BaojianLeo
  • 2015年10月15日 22:19
  • 188

交换两个整数数值的三种方法

交换两个整数的方法
  • dky892362997
  • dky892362997
  • 2017年12月25日 14:47
  • 37

JavaScript交换两个变量值的四种方法

交换变量值指的是两个变量之间的值相互交换,具体的方法可总结出四种 一、使用第三个变量(最简单,但不推荐) var a=3; var b=5; var t=a; b=a; b=t; console....
  • baidu_25343343
  • baidu_25343343
  • 2017年02月11日 12:33
  • 589

位运算-加法运算、交换两个数值

前面的引言部分是写在前面的胡说八道,了解题目的话可以直接跳过此部分查看正文。引言这个问题的来源是http://www.lintcode.com/上的编号第一的面试题目,涉及到二进制位运算,很有意思。并...
  • surp2011
  • surp2011
  • 2016年04月14日 10:52
  • 1783
收藏助手
不良信息举报
您举报文章:如何正确的使用函数交换两个数值.
举报原因:
原因补充:

(最多只允许输入30个字)