C语言交换两个变量的值
2017-04-25 16:04
721 查看
交换两个变量的值:
可以借助一个中间变量temp,把a的值附给temp,把b的值给a,再把temp的值给b,就完成了交换。
代码:
方法缺陷:是只能用于数字类型,字符串之类的就不可以了。a+b有可能溢出不安全(不推荐)。
代码:
优点:这种方法是效率最高的一种,
代码:
所以就有如下代码:
这样根本没有发生交换,这是因为我们在swap(int a, int b)中交换的a,b只是我们真正需要交换的a,b的一份拷贝,而真正的a,b并没有发生交换,所以为了真正达到交换的目的:
我们必须给函数传递需要交换的值得地址, 这样函数便可以通过这个地址找出要交换的值(也就是址传递)。
修改后代码为:
1、main函数内交换
1.1、引用中间变量
思路:假设:a=10,b=20 我们想要交换a与b的值,可以借助一个中间变量temp,把a的值附给temp,把b的值给a,再把temp的值给b,就完成了交换。
代码:
#include <stdio.h> int main(int argc, const char * argv[]) { int a = 23, b = 35; int temp = 0; printf("a = %d, b = %d\n", a, b); temp = a; a = b; b = temp; printf("a = %d, b = %d\n", a, b); return 0; }
1.2、利用数学加减法进行交换
思路:A=A+B;B=A-B;A=A-B;方法缺陷:是只能用于数字类型,字符串之类的就不可以了。a+b有可能溢出不安全(不推荐)。
代码:
#include <stdio.h> int main(int argc, const char * argv[]) { int a = 23, b = 35; printf("a = %d, b = %d\n", a, b); a = a + b; b = a - b; a = a - b; printf("a = %d, b = %d\n", a, b); return 0; }
1.3、利用位异或运算来实现交换
思路:利用一个数异或本身等于0和异或运算符合交换率优点:这种方法是效率最高的一种,
代码:
#include <stdio.h> int main(int argc, const char * argv[]) { int a = 23, b = 35; printf("a = %d, b = %d\n", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("a = %d, b = %d\n", a, b); return 0; }
2、函数调用
编写函数实现两个变量的交换我们首先想到的就是将a,b两个值传过去,用上面任意一个方法实现交换所以就有如下代码:
#include <stdio.h> void swap(int a, int b) { int temp = 0; temp = a; a = b; b = temp; } int main(int argc, const char * argv[]) { int a = 23, b = 35; printf("交换前:a = %d, b = %d\n", a, b); swap(a, b); printf("交换后:a = %d, b = %d\n", a, b); return 0; }编译之后我们会发现:
这样根本没有发生交换,这是因为我们在swap(int a, int b)中交换的a,b只是我们真正需要交换的a,b的一份拷贝,而真正的a,b并没有发生交换,所以为了真正达到交换的目的:
我们必须给函数传递需要交换的值得地址, 这样函数便可以通过这个地址找出要交换的值(也就是址传递)。
修改后代码为:
#include <stdio.h> void swap(int *a, int *b) { int temp = 0; temp = *a; *a = *b; *b = temp; } int main(int argc, const char * argv[]) { int a = 23, b = 35; printf("交换前:a = %d, b = %d\n", a, b); swap(&a, &b); printf("交换后:a = %d, b = %d\n", a, b); return 0; }编译后的结果为:
相关文章推荐
- 黑马程序员——【C语言】用三种方式交换两个变量的值
- [c语言笔记]关于指针操作中使用异或交换两个变量的值
- 【c语言】 交换两个整形变量的值(要求不创建临时变量)
- 使用C语言指针交换两个变量的值
- C语言(如何不使用第三个变量达到交换两个变量值的目的)
- C语言学习之交换两个变量的值
- 标准C语言,不用引入新变量就可以交换两个变量的方法及其注意事项
- C语言交换两个变量的值
- C语言交换两个变量(不创建临时变量)(位运算简介)
- C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
- C语言中交换两个变量数值的方法
- C语言 交换两个变量的值的实现
- 黑马程序员------C语言中交换两个变量的值
- C语言之多种方法交换两个变量的值
- C语言小程序--交换两个变量的值
- C语言中交换两个变量的值
- 用函数交换两个变量的值(C语言指针)
- C语言练习篇-2交换两个变量的值
- C语言交换两个变量的值
- 利用C语言来实现交换两个变量的值,由终端输入两个整数给变量x、y,然后交换x和y的值后,输出x和y。 有不同的方法