张小小凡 发表于 2019-3-10 20:33:18

请教一下 为什么输出还是 3 2 1

#include "stdio.h"


void main()
{
    int a = 3,b= 2 ,c = 1;

    void exchange(int ,int ,int );

    exchange(a,b,c);

    printf("%d %d %d",a,b,c);
}
void exchange(int a,int b,int c)
{
    void swap(int ,int);
    if(a>b)
    {
      swap(a,b);
    }
    if (a>c)
    {
      swap(a,c);
    }
    if (b>c)
    {
      swap(b,c);
    }
       
}

void swap(int x,int y)
{
    int temp;
    temp = x;
    x = y;
    y = temp;


}

ba21 发表于 2019-3-10 20:56:42

道 理很简单,函数里面的abc是临时变量,并不是你主函数中的abc。
先看这一段代码:
#include "stdio.h"


void main()
{
    int a = 3,b= 2 ,c = 1;

    void exchange(int ,int ,int );

    exchange(a,b,c);

    printf("%d %d %d",a,b,c);
}
void exchange(int e,int f,int g)
{
    void swap(int ,int);

    if(e>f)
    {
      swap(e,f);
    }
    if (e>g)
    {
      swap(e,g);
    }
    if (f>g)
    {
      swap(f,g);
    }
      
}

void swap(int x,int y)
{
    int temp;
    temp = x;
    x = y;
    y = temp;


}

指针,再看实现代码:
#include "stdio.h"


void main()
{
    int a = 3, b = 2 , c = 1;

    void exchange(int *,int *,int *);

    exchange(&a, &b, &c);

    printf("%d %d %d \n",a,b,c);
}

void exchange(int *e,int *f,int *g)
{
    void swap(int *,int *);

    if( *e > *f )
    {
      swap(e, f);
    }

    if ( *e > *g )
    {
      swap(e, g);
    }

    if ( *f > *g )
    {
      swap(f, g);
    }
      
}

void swap(int *x,int *y)
{
    int temp;

    temp = *x;
    *x = *y;
    *y = temp;

}

张小小凡 发表于 2019-3-10 21:01:44

ba21 发表于 2019-3-10 20:56
道 理很简单,函数里面的abc是临时变量,并不是你主函数中的abc。
先看这一段代码:



多谢啦 明白了

我叫MD 发表于 2019-3-10 21:02:09

本帖最后由 我叫MD 于 2019-3-10 21:04 编辑

不好意思
页: [1]
查看完整版本: 请教一下 为什么输出还是 3 2 1