A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© beijingdbm 中级黑马   /  2015-5-24 10:17  /  1274 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何将两个变量相互交换

10 个回复

倒序浏览
提供两种方法,一种是利用指针,一种是利用引入第三变量

  1. #include <stdio.h>



  2. void  update1(int num1, int num2) {
  3.     int temp = num1;
  4.     num1 = num2;
  5.     num2 = temp;
  6. }

  7. void  update2(int *num1, int *num2) {
  8.     // int *num1 = &n1
  9.     // int *num2 = &n2
  10.    
  11.     int temp = *num1;
  12.     *num1 = *num2;
  13.     *num2 = temp;
  14. }




  15. int main(int argc, const char * argv[]) {
  16.    
  17.     int n1 = 10, n2 = 5;
  18.    
  19.     // update1(num1, num2);
  20.     update2(&n1, &n2);
  21.    
  22.    
  23.    
  24.     printf("%d, %d\n", n1, n2);
  25.    
  26.     return 0;
  27. }



复制代码
回复 使用道具 举报
共三种方法,一种第三方变量,一种疑或,另一种通过算数运算
回复 使用道具 举报
视频中的又一种很简便的方法
回复 使用道具 举报
楼上正解,不过没写示例代码,我给补充一下。
第一种方法:
  1. int a, b, c; //其中a,b为要交换的变量,c为中间变量,数据的初始化略过。
  2. c = a;
  3. a = b;
  4. b = c;
复制代码
第二种方法:
  1. a = a ^ b;
  2. b = a ^ b;
  3. a = a ^ b;
复制代码
第三种方法:
  1. a = a + b;
  2. b = a - b;
  3. a = a - b;
复制代码




回复 使用道具 举报 1 0
楼上打的 也是我想说的:lol
回复 使用道具 举报
都是厉害啊 俺们属于菜鸟的额
回复 使用道具 举报
青春印记深圳 来自手机 中级黑马 2015-5-24 14:38:25
8#
楼上正解请看
回复 使用道具 举报
受教了啊
回复 使用道具 举报
都是高手大神啊 ,收益匪浅
回复 使用道具 举报
受益匪浅,又复习了下原来的知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马