当前位置: 代码迷 >> C语言 >> 请较大家一个问题~怎要才能用函数的方法对调2个变量的值?
  详细解决方案

请较大家一个问题~怎要才能用函数的方法对调2个变量的值?

热度:310   发布时间:2008-06-17 16:42:44.0
请较大家一个问题~怎要才能用函数的方法对调2个变量的值?
#liclude <stdio.h>
void swap(int a,int b);

void main()
{
  int x=7, y=11;
  printf("before swapped: ");
  printf("x=%d,y=%d\n",x,y);
  swap(x,y);
  printf("after swapped: ");
  printf("x=%d,y=%d\n",x,y);
}

void swap(int a,int b)
{
  int t;
  t=a;
  a=b;
  b=t;
}


为什么X与Y的值不能对调??要怎样修改才能实现X,Y的值对调呢?请高手们指点。
搜索更多相关的解决方案: 变量  函数  对调  

----------------解决方案--------------------------------------------------------
用指针或者引用,看书
如果你学的是C就看指针



[flash=400,300]http://yzfy.byethost17.com/flash.php[/flash][color=white]
----------------解决方案--------------------------------------------------------
路过帮帮忙
----------------解决方案--------------------------------------------------------
回复 2# 爱喝牛奶的猫咪 的帖子
怎用指针呢??在void swap(int a,int b)
上改动吗?
----------------解决方案--------------------------------------------------------
void swap(int *p1,int *p2)
{
    int i;
    i=*p1;
    *p1=*p2;
    *p2=i;
}
----------------解决方案--------------------------------------------------------
上面的调用方法是swap(&a,&b)
用引用就更简单了啊。。
void swap(int& a,int& b)
{
    int i;
    i=a;
    a=b;
    b=i;
}
调用的时候直接用swap(a,b)就可以了。。
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void swap(int a,int b)
{
  int t;
  t=a;
  a=b;
  b=t;
  printf("%d %d",a,b);
}

void main()
{
  int x, y;
  scanf("%d %d",&x,&y);
  swap(x,y);
}

――――――――――――――――――――――――


#include<stdio.h>
void swap(int *a,int *b)
{
  int t;
  t=*a;
  *a=*b;
  *b=t;
  printf("x=%d y=%d",*a,*b);
}

void main()
{
  int x, y,*m,*n;
  scanf("%d %d",&x,&y);
  printf("交换前:\n");
  printf("x=%d y=%d",x,y);
  putchar('\n');
  printf("交换后:\n");
  m=&x;n=&y;
  swap(m,n);
}

[[it] 本帖最后由 crabeam 于 2008-6-18 10:57 编辑 [/it]]
----------------解决方案--------------------------------------------------------
基础要打牢阿
----------------解决方案--------------------------------------------------------
感谢大家~~~~
----------------解决方案--------------------------------------------------------
恩,除了用指针 c的函数都是值传递,那实参传递给形参便只是简单的值的复制,而只有指针才能实现值的直接改变,因为地址只有一个
----------------解决方案--------------------------------------------------------
  相关解决方案