黑马程序员技术交流社区

标题: C中用函数实现两个数交换 [打印本页]

作者: wangchao1992    时间: 2015-8-10 16:55
标题: C中用函数实现两个数交换
本帖最后由 wangchao1992 于 2015-8-10 16:58 编辑

#include <stdio.h>

/**
*  不能交换
*/
void swap1(int a,int b){
    // 此函数是值传递
    //此处实质上是形参a和b值得交换,
    //跟实参没有关系
    int temp;
    temp = a;
    a = b;
    b = temp;

}

//怎么交换正确的交换两个变量的值
void swap2(int *p,int *p1){
     //此函数是地址传递
    //形参变量的地址进行的交换
    int *temp;
    temp = p;
    p = p1;
    p1 = temp;

}

//终级解决方案
void swap3(int *p,int *p1){
    //此函数是地址传递,
    //通过指针直接修改变量的值了
    int temp;
    temp = *p;
    *p = *p1;
    *p1 = temp;
   
}

int main(int argc, const char * argv[]) {
   
    int a = 4,b = 5;  // a = 5,b = 4
    printf("交换前:a = %d,b = %d\n",a,b);
    swap3(&a, &b);
    printf("交换后:a = %d,b = %d\n",a,b);
   
   
   
    return 0;
}


作者: norwood    时间: 2015-8-10 17:35
恩只能通过指针来修改
作者: wangchao1992    时间: 2015-8-10 17:45
norwood 发表于 2015-8-10 17:35
恩只能通过指针来修改

{:3_59:}{:3_59:}{:3_59:}指针 好难
作者: norwood    时间: 2015-8-10 17:52
wangchao1992 发表于 2015-8-10 17:45
指针 好难

看多了就好了
作者: 庐山烟雨浙江潮    时间: 2015-8-10 18:43
毕竟不是一个代码块,所以只有通过指针来直接对内存的修改。
作者: lixianzhu0712    时间: 2015-8-10 21:03
恩恩 很棒
作者: wangchao1992    时间: 2015-8-10 21:10
lixianzhu0712 发表于 2015-8-10 21:03
恩恩 很棒

{:2_36:} 菜鸟也要飞
作者: wangchao1992    时间: 2015-8-10 21:11
norwood 发表于 2015-8-10 17:52
看多了就好了

恩恩,一直都在努力
作者: 飓风少年    时间: 2015-8-10 21:23
最后一种表示没见过。。。。
作者: 阿伦666    时间: 2015-8-10 21:29
多努力就会了啊
作者: wangchao1992    时间: 2015-8-10 21:33
飓风少年 发表于 2015-8-10 21:23
最后一种表示没见过。。。。

最后一种最重要
作者: wangchao1992    时间: 2015-8-10 21:44
阿伦666 发表于 2015-8-10 21:29
多努力就会了啊


作者: 墨琰    时间: 2015-8-10 21:53
努力努力不放弃
作者: 余丽丽    时间: 2015-8-10 21:59
还可以用三次异或运算
作者: 余丽丽    时间: 2015-8-10 22:01

a=a^b;b=a^b;
a=a^b;


作者: lzfree    时间: 2015-8-10 22:03
顶一下~~~
作者: wangchao1992    时间: 2015-8-10 22:13
余丽丽 发表于 2015-8-10 22:01
a=a^b;b=a^b;
a=a^b;

你说的是两个数交换 , 有加减法,异或, 还有 利用变量
作者: 余丽丽    时间: 2015-8-10 22:15
wangchao1992 发表于 2015-8-10 22:13
你说的是两个数交换 , 有加减法,异或, 还有 利用变量

是的
作者: chensc    时间: 2015-8-11 06:25
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2