风雨之后 发表于 2016-1-23 05:30:44

C语言042讲第八分钟代码拓展,交换a与b的地址保持a与b的值不变,为什么无法成功

C语言042讲第八分钟代码拓展,交换a与b的地址保持a与b的值不变,为什么无法成功

#include <stdio.h>               //实现比较大小,输出先大后小
void swap(int *m,int *n);
void main()
{
      
      int *p,*q;
      int a,b;
      scanf("%d%d",&a,&b);
      p=&a;
      q=&b;
      if(a<b)
      {
            swap(p,q);            //如果a>b,交换a和b
      }
      printf("%d%d\n",a,b);
      printf("%d > %d\n",*p,*q);
}

void swap(int *m,int *n)   //实现a和b的地址交换,保持a和b的值不变。
{
      int *t;
      printf("^_^\n");
      t=m;
      m=n;
      n=t;
}

forbear 发表于 2016-1-23 11:02:29

#include <stdio.h>               //实现比较大小,输出先大后小
void swap(int *m,int *n);
void main()
{
      
      int *p,*q;
      int a,b;
      scanf("%d%d",&a,&b);
      p=&a;
      q=&b;
      if(a<b)
      {
            swap(p,q);            //如果a>b,交换a和b
      }
      printf("%d%d\n",a,b);
      printf("%d > %d\n",*p,*q);
}

void swap(int *m,int *n)   //实现a和b的地址交换,保持a和b的值不变。
{
      int t;
      printf("^_^\n");
      t=*m;                  //形参传下来怎么被该了?
      *m=*n;                  //声明t的时候不应该把它声明成指针
      *n=t;
}

Drivewin 发表于 2016-1-23 11:26:38

小甲鱼 发表于 2016-1-23 18:24:23

C语言出新系列《带你学C带你飞》啦,比《零基础入门学习C语言》更深入,更详细,更实用!建议看下新的教程,旧的不要看啦~{:10_319:}
页: [1]
查看完整版本: C语言042讲第八分钟代码拓展,交换a与b的地址保持a与b的值不变,为什么无法成功