请教一下 为什么输出还是 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;
}
道 理很简单,函数里面的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;
}
ba21 发表于 2019-3-10 20:56
道 理很简单,函数里面的abc是临时变量,并不是你主函数中的abc。
先看这一段代码:
多谢啦 明白了
本帖最后由 我叫MD 于 2019-3-10 21:04 编辑
不好意思
页:
[1]