请较大家一个问题~怎要才能用函数的方法对调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的函数都是值传递,那实参传递给形参便只是简单的值的复制,而只有指针才能实现值的直接改变,因为地址只有一个
----------------解决方案--------------------------------------------------------