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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用一个指针来交换a,b的值;写个代码,我就能懂思想了。或者把思想写出来也行

7 个回复

倒序浏览
本帖最后由 Elors 于 2015-6-15 09:24 编辑
  1. void swap(int* p1, int* p2){
  2.         *p1 = *p1 + *p2;
  3.         *p2 = *p1 - *p2;
  4.         *p1 = *p1 - *p2;
  5. };
复制代码
给你个进化版
回复 使用道具 举报
沙睿 来自手机 中级黑马 2015-6-15 13:22:09
藤椅
陈治盛 发表于 2015-6-15 07:23
你如果不给指针分配存储空间,指针只会可能指向a或者b,我觉得这和直接调用ab没有什么区别......如果给分配 ...

这只是我的想法,但没有去实现成功,但觉得可行,所以来这问问
回复 使用道具 举报
沙睿 来自手机 中级黑马 2015-6-15 13:24:07
板凳
Elors 发表于 2015-6-15 09:23
给你个进化版

这个我知道,看好我的想法,是用一个指针交换两个值,重点是这个。  其他方法我也会,例如不借助其他变量也能交换。
回复 使用道具 举报
#include <stdio.h>

int main(int argc, const char * argv[]) {
   
   
    int a=5,b=6;  //定义两个变量
    printf("转换前:a=%d,b=%d\n",a,b);  //转换前有个打印
   
    int *pa=&a;  //定义一个指针指向&a
   
    int *pb=&b;  //定义一个指针指向&b
   
    int temp=0;  //定义一个变量作为转换媒介
   
    temp=*pa;    //实现转换
   
    *pa=*pb;
   
    *pb=temp;
   
    printf("转换后:a=%d,b=%d\n",a,b);  //转换后打印
    return 0;
}
回复 使用道具 举报
这实际和定义一个变量转换一样,你看看吧,意义不大
回复 使用道具 举报
沙睿 中级黑马 2015-6-15 23:25:37
7#
hanxujie 发表于 2015-6-15 13:32
这实际和定义一个变量转换一样,你看看吧,意义不大

确实意义不大。不过我就是一直没实现。属于弄不出来就闹心那种。
回复 使用道具 举报
围观学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马