| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#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;
 
  
- }
 
 
  复制代码 
 
 
 |   
 
 
 
 |