swap(int x,int y)
{
int x1;
x1=x;
x=y;
y=x1;
printf("%d,%d\n",x,y);
}
void main()
{
int x3=5,x4=6;
swap(x3,x4);
printf("%d,%d\n",x3,x4);
getch();
}
swap(int x,int y)
{
int x1;
x1=x;
x=y;
y=x1;
printf("%d,%d\n",x,y);
}
void main()
{
int x3=5,x4=6;
swap(x3,x4);
printf("%d,%d\n",x3,x4);
getch();
}
楼上的那位大哥,主函数中的值没有交换啊.调用函数设为指针类型后好像还是不行撒.
这是我改的:
swap(int *x,int *y)
{
int x1=0;
x1=x;
x=y;
y=x1;
}
void main()
{
int **x3,**x4;
*x3=5;
*x4=6;
swap(**x3,**x4);
printf("%d,%d\n",*x3,*x4);
getch();
}
还是不能互换
[此贴子已经被作者于2007-5-11 16:55:52编辑过]
你真的晓得了吗?
我刚才的话没讲明白为什么会这样呢!
调用函数,如果不设置返回的话,那么主函数中的值是不会改变的
换句话说主函数中x=5,y=6没有改变
调用函数,只能将形参的值改变
换句话说:
如果不返回的话
就是主函数的实参可以传递给调用函数的形参,但是调用函数的行参是不能传递给主函数的形参的
但是为什么结果会是我上边讲的那个结果呢?
因为现在的编译器都比较“聪明”(这是程序员偷懒的结果)
如果想要得到这个值的话,就必须要用到指针或者数组来储存值
但是这个就不是调用函数的放回值了(一个函数只能有一个返回值!)
帮我改一下我看看
swap(int* x,int* y)
{
int x1;
x1=*x;
*x=*y;
*y=x1;
printf("%d,%d\n",*x,*y);
}
void main()
{
int x3=5,x4=6;
swap(&x3,&x4);
printf("%d,%d\n",x3,x4);
getch();
}
swap(int a[2])
{
int x1;
x1=a[0];
a[0]=a[1];
a[1]=x1;
}
void main()
{
int b[2]={5,6};
swap(b);
printf("%d,%d",b[0],b[1]);
getch();
}
这样也行啊
因为函数调用时只临时给它分配存储空间,函数执行完就会将存储空间释放
所以不能完成交换
利用地址传递试试